Vous êtes sur la page 1sur 5

Programando el evento Load de un Web Panel

Comenzamos esta demo habiendo ya agregado al segundo nivel de Flight el atributo CustomerId para poder
asignarle al asiento del vuelo, el pasajero correspondiente.

Ya reorganizamos, ejecutamos y agregamos ms datos de aerolneas, clientes y vuelos, de los que tenamos. Si viene
reproduciendo lo visto, haga usted tambin todo esto antes de continuar.

Ahora, supongamos que en vez de desplegar para cada cliente su direccin,

Page

queremos desplegar el total gastado en sus vuelos (es decir, la suma de los precios de los vuelos en los que el cliente
est registrado).

Video filmado con GeneXus X Evolution 2

Esta informacin tendremos que calcularla para cada cliente dado que no tenemos un atributo que contenga ese
dato.
Por ejemplo, si esta es la tabla de clientes, al cargar el cliente 1, el atributo frmula, CustomerFullName, se calcula
Y debemos recorrer la tabla de asientos de los vuelos, y para cada asiento donde est el cliente, encontrar el valor
del precio del vuelo,, FlightFinalPrice, frmula asociada a la tabla Flight. Sumamos todos esos precios y tenemos
que cargar en el grid ese resultado, junto con el nombre completo del cliente y as sucesivamente para cada cliente
de la tabla Customer.
Para ello, en el grid insertaremos una variable, que calcularemos con este cdigodonde inicializamos la variable en
cero y luego en un for each que recorre la tabla FlightSeat, sumamos el precio del vuelo al valor de la variable.
Al culminar el cdigo, queremos que se cargue la lnea en el grid, mostrando el nombre completo del cliente y el
precio de sus vuelos. Y as para cada cliente.
Pero dnde especificamos este cdigo?
Tiene que ejecutarse inmediatamente antes de cargar los datos de cada cliente en el grid (antes de cargar cada
lnea).
Este momento es el evento de nombre Load.
Se producir una vez por cada registro a cargar en el grid y justo antes de cargarlo (luego veremos un caso en que
se produce una sola vez, aunque haya que cargar varias lneas en el grid).
As, si tenemos 3 clientes, ocurrir tres veces.

Page

Vamos entonces a hacerlo. Insertamos una nueva columna, y all definimos una nueva variable, flightPrices, basada
por ejemplo en el dominio Price, y la insertamos

Video filmado con GeneXus X Evolution 2

Vamos a la seccin de Eventos, y aqu elegimos entre los distintos eventos del sistema, aquel al que queremos
asociarle un cdigo para que se ejecute al ocurrir el evento.

Page

Le asociamos el cdigo que habamos pensado

Video filmado con GeneXus X Evolution 2

Y presionamos F5 para ejecutar.

Tenemos 11 clientes en la base de datos y si atendemos al cargado en la primera lnea, dice que el precio final es
6400, que debera ser la suma de 2250, ms2250 ms 1900 (ese era el ltimo vuelo)

Page

Si observamos el listado de navegacin:

Video filmado con GeneXus X Evolution 2

Page

Podemos ver anidado a la recorrida de la tabla base del grid, Customer, el for each que escribimos dentro del evento
Load, que GeneXus infiri que accede a la tabla FlightSeat, tal como esperbamos. Observemos que, al igual que en
el caso de for eachs anidados, GeneXus encuentra el atributo que los relaciona, y filtra por l.

Video filmado con GeneXus X Evolution 2

Vous aimerez peut-être aussi