Introducción
El objetivo es tener la posibilidad de diseñar Web Panels con más de una grilla o Subfile para potenciar el desarrollo de estos objetos, entre otras cosas para resolver en el mismo objeto accesos a diferentes tablas.
Descripción
El uso de varios subfiles en un web panel, implicaron un cambio en la forma de especificar en GeneXus las reglas, los eventos y las condiciones asociados a los mismos.
A continuación se detallan los cambios de comportamiento y las forma s de uso de las entidades pertenecientes a estos objetos GeneXus.
A
TRIBUTOS.
Un atributo puede pertenecer a más de un subfile. La forma de referenciar ese atributo es como propiedad del subfile de la siguiente forma:
<Subfile Control Name>.<Attribute>
Si el atributo no pertenece a más de un subfile, no es necesario el prefijo <Subfile Control Name>.
V
ARIABLES.
No se permite <Subfile Control Name>.<Variable>.
Esto implica que no se recomienda tener la misma variable en mas de un subfile ya que cuando la misma variable está presente en más de un subfile, los cambios de las propiedades afectan a todos los subfiles en los que se encuentra.
P
ROPIEDADES.
Las propiedades de los subfiles conservan la implementación y comportamiento actual ya que siempre estuvieron asociadas al objeto.
E
VENTOS.
Los eventos del subfile conservan su comportamiento actual.
Los eventos Load y Refresh deben referenciar al subfile usando la siguiente nomenclatura:
Event <Subfile Control Name>.<Refresh | Load> ....
37
C
OMANDOS.
Los comandos que actúan específicamente sobre el subfile cambian de forma de que, en caso de haber más de un subfile, se pueda determinar a cual subfile se aplica, estos comandos son:
Ø For each line: Este comando debe incluir una referencia al subfile de la siguiente forma: For each line IN <Subfile Control Name>
Ø Load: Dispara la carga del subfile. La sintaxis continua siendo Load, pero debe incluirse dentro del evento load asociado a dicho subfile. Si el objeto solo tiene un subfile, no es necesario usar la nomenclatura nueva.
Ejemplo Event Subfile1.Load … Load Endevent
R
EGLAS.
Ø Order: Quedan asociadas al subfile. (Se puede editar dando clic con botón derecho sobre el subfile)
Ø Hidden: Los atributos / variables nombrados en esta regla son colocados como “hidden” en cada uno de los subfiles. No se recomienda su uso, en contrapartida se recomienda agregar el atributo / variable al subfile y luego ocultarlo usando la propiedad visible.
La razón para promover el uso de los atributos / variables con la propiedad Visible en False en lugar de la regla hidden es que los atributos referenciados en las reglas hidden están en TODOS los subfiles mientras que los otros sólo están para el subfile en que fueron definidos. Esto redunda en menos código HTML a enviar al Browser y, en consecuencia, mejor performance
P
RECEDENCIASØ Order: Si el conjunto de atributos de la regla se corresponde con los de algún subfile y este tiene un orden asignado explícitamente este último es el que se toma en cuenta.
Ø Search: La regla search sobre algún atributo se toma en cuenta para el o los subfiles a los que pertenece el atributo.
C
ONDITIONS.
Las condiciones se pueden indicar por cada subfile o en forma general para el objeto. Si hay condiciones generales y particulares sobre los mismos atributos, se toman en cuenta todas.
D
ETERMINACIÓN DE LA TABLA BASEComo los web panels permiten tener mas de un subfile, es que hay una tabla base por cada subfile.
Los atributos que participan en la determinación de la tabla base de cada subfile son los que:
• Están en el subfile
• Están referenciados en las reglas Hidden y Order aplicadas al subfile
Los atributos de la parte fija no participan en la determinación de la tabla base de ninguno de los subfiles, pero deberán pertenecer a la tabla extendida de alguno de ellos. Si hay alguno que no cumpla la condición da el warning: ”Attribute not instantiated”. Notar que es posible que algunos atributos de la parte fija estén en una tabla extendida y otros en otras.
Tampoco participan los atributos que están en los Eventos (fuera de los grupos For each) como ocurre en los work panels. Estos, deberán pertenecer a la tabla extendida de alguno de los subfiles.
C
ARGA.
La carga se realiza para cada subfile de forma independiente, es decir, aún si los datos que se muestran en ambos subfiles están relacionados, el especificador no relaciona las cargas.
La carga incluye el evento refresh, o sea que la secuencia de carga de un objeto con 2 subfiles es:
Evento refresh del subfile 1 Evento Load subfile 1 Evento refresh del subfile 2 Evento Load subfile 2
El orden en que se cargan los subfiles es como aparecen en el form: de arriba hacia abajo y de izquierda a derecha.
39
SUBFILES ANIDADOS
Es posible definir subfiles 'anidados' en un web panel.
Los subfiles anidados consisten en un subfile Freestyle al que se puede insertar dentro de una celda otro subfile estándar u otro Freestyle.
Por ejemplo, se quiere tener un web panel que muestre los productos, pero indentados por categoría:
Electrodomésticos Heladera TV Muebles de escritorio Silla ejecutiva Mesa de directorio ...
Para ello se define un subfile free-style con la categoría y dentro de este se inserta otro subfile con los productos.
Puede haber subfiles anidados de varios niveles y puede haber también paralelos. Puede decirse que se está definiendo un árbol en donde cada nodo es un subfile. Cada subfile puede ser un free-style o un subfile común, aunque si es común no puede tener ninguno anidado.
Los subfiles comunes solo pueden ser hojas del árbol de anidación.