top of page
Cambio de Seleccionado en rejilla ...
Ramiro Pérez Acebo - Julio 2014
 
 

En ocasiones colocamos en un formulario dos rejillas de tal forma que al cambiar el registro seleccionado en la primera queremos que en la segunda se actualice cierta información relacionada...

En principio la cosa es sencilla: basta con establecer una conexión de evento que detecte el cambio de selección en la primera rejilla y vincularlo a un manejador que fuerce el recálculo y presentación de registros en la segunda.

 

Sean REJ_PROV la rejilla superior de la imagen y REJ_DEF la inferior.

 

El manejador REC_DAT_DEF se encarga de actualizar la información de la segunda al cambiar el registro seleccionado en la primera.

 

La conexión de evento sería de esta forma:

            

 

En principio parece que debería funcionar si el manejador fuera así...

 

Pero el caso es que ésta técnica no funciona porque en lugar de leer el nuevo registro seleccionado, lo que en realidad se obtiene es el registro que estaba seleccionado justo antes del cambio de selección. 

Entonces... ¿cómo debemos hacerlo?

 

Una opción es encargarle parte de la tarea a la propia rejilla, que será quien se responsabilice de controlar el registro que tiene seleccionado.

 

Para ello hemos de definir (en la rejilla):

 

-           Una variable, N_REG_SEL que conserve el #ID del registro seleccionado (mismo Tipo que el #ID de la Tabla)

-           Una conexión de evento que detecte el cambio de seleccionado

-           Una manejador de evento que actualice el valor de la variable

 

Conexión de Evento:

Manejador de Evento:

Una vez que la rejilla tiene este comportamiento, el manejador de Evento (REC_DAT_DEF) del formulario con la doble rejilla debería:

 

-           Preguntarle a la rejilla superior por el registro que está seleccionado

-           Ejecutar la búsqueda de registros a presentar en la rejilla inferior

-           Memorizar los registros encontrados en una cesta

-           Asignar los registros a la segunda rejilla

 

Es decir, más o menos como se ve en la imagen:

Este planteamiento tiene la ventaja de que lo definido a nivel de rejilla estará disponible allí donde la usemos, por lo que resulta muy tentador definirlo por defecto en todas las rejillas de nuestros proyectos. Tal vez hoy no lo necesitemos pero mañana puede que si...

Se agradecerá cualquier sugerencia que simplifique o mejore esta técnica...

bottom of page