Programando el Evento Refresh de un Web Panel

Anuncio
Programando el Evento Refresh de un Web Panel
Teníamos un web panel que desplegaba información de los clientes y permitía filtrar la información desplegada por
nombre completo del cliente.
Si ahora queremos ver bajo el grid el total gastado entre todos los clientes, vamos a tener que calcularlo y
desplegarlo en una variable, dado que no tenemos un atributo en la base de datos con esa información.…
Insertamos entonces dentro de una tabla…una nueva variable &totalFlightPrices, basada en el atributo
FlightFinalPrice…
¿Dónde asignamos valor a esta variable? Cuando se realiza la carga del grid, antes de cargar cada línea hay que ir
sumándole a la variable el total gastado por ese cliente. El evento que ocurre para cada línea y antes de cargarla en
el grid es el LOAD, por lo cual es en este evento en el que hay que ir sumando. Cada vez que se cargue una nueva
línea del grid, … … al valor que tenía la variable, le sumamos el precio de los vuelos del cliente que se carga en esa
oportunidad…
Page
1
Veámoslo en ejecución. F5.
Video filmado con GeneXus X Evolution 2
Como primera cosa observemos que la variable es de entrada
Ya habíamos dicho que si no modificamos nada, las que se encuentren en la parte fija lo serán. Como en este caso
queremos que sea de salida, tendremos que indicárselo
F5.
Suma: 30450
Page
2
Si ahora filtramos por Heminway, cuyos vuelos suman 4150… debería decir 4150
Video filmado con GeneXus X Evolution 2
Sin embargo se sumó a la cantidad anterior 30450, la nueva 4150…
Es que debemos poner en 0 la variable antes de que se comience a cargar el grid… cada vez que se vuelva a cargar.
El momento oportuno es el evento Refresh, que como el evento Load, puede programarse.
3
Observemos que el orden en que aparecen aquí escritos los eventos no tiene ninguna importancia. De hecho,
acabamos de ver que antes de comenzar a cargar el grid se ejecuta el Evento Refresh y a continuación y para cada
línea se ejecuta el código escrito dentro del Evento Load (al revés de como aparecen escritos).
Page
Ejecutemos, F5
Ahora al filtrar por ejemplo por B… está mostrando la cantidad correcta.
Video filmado con GeneXus X Evolution 2
Esto es porque se produce el Refresh que pone en cero la variable y produce un acceso a la base de datos…
Donde por cada registro de la tabla a ser cargado, se produce un evento Load, que calcula el valor de la variable
&flightPrices, desplegándolo en el grid, pero además incrementa el de la variable &totalFlightPrices
Page
4
Que luego de ejecutarse los 3 Loads, quedará con su valor final.
Video filmado con GeneXus X Evolution 2
Descargar