Campos en Grillas dentro de Grillas

From GXtest Wiki
Revision as of 19:42, 10 March 2010 by Ftoledo (Talk | contribs)

Jump to: navigation, search


En algunas aplicaciones se utilizan grillas dentro de grillas. Esto se permite con GeneXus a través de las FreeStyleGrid.

Para estas situaciones GXtest no graba las acciones de aquellos campos dentro de las grillas incluídas en las grillas padres y es necesario agregar los comandos a mano.

Para esto existe el comando SetGridContext. El mismo permite crear un contexto de grilla el cual establece un criterio de selección para una grilla. Este comando se puede utilizar de manera consecutiva y concatenada para tener varios niveles de inclusión.

Comando SetGridContext

El comando SetGridContext tiene los siguientes parámetros:

  • OutputContext (de tipo Variable): en esta variable se devolverá el contexto de la grilla. Dicho contexto se construye a partir de los demás parámetros. Luego esta variable la cual constituye un contexto, será utilizada en los comandos que ejecuten acciones en controles que estén en grillas dentro de grillas.
  • InputContext (de tipo Variable, es opcional): este es un contexto de entrada que se puede utilizar para montar el nuevo contexto. Cuando se necesita hacer acciones en varias grillas anidadas se debe utilizar este campo.
  • Grid (de tipo Control): grilla sobre la cual se va a establecer el contexto.
  • SelectionRule (criterio de selección): criterio de selección para la grilla Grid.

Ejemplo

Supongamos que se tiene una página donde se listan en una grilla todas las facturas y dentro de cada factura se listan sus líneas.

En ese ejemplo supongamos que la grilla que lista las facturas se llama GridInvoices y la que tiene las líneas de cada factura se llama GridInvoiceLines. Luego supongamos que se necesita hacer dos verificaciones con el comando VerifyControlTextTable sobre los campos InvoiceLineAmount y InvoiceLineNumber.

Para realizar estas dos validaciones se deberían utilizar los siguientes comandos:

  • SetGridContext (el contexto ContextGridInvoice me permite ejecutar comandos en la primera fila de la grilla de facturas)
    • OutputGrid=ContextGridInvoice
    • InputGrid=(vacio)
    • Grid=GridInvoice
    • SelectionRule=ByRow(1)
  • SetGridContext (el contexto ContextGridInvoiceLines me permite ejecutar comandos en la primera linea de la primera factura)
    • OutputGrid=ContextGridInvoiceLines
    • InputGrid= ContextGridInvoice
    • Grid=GridInvoiceLines
    • SelectionRule=ByRow(1)
  • VerifyControlTextTable (ahora al comando le indico que utilice el contexto adecuado)
    • Grid=GridInvoiceLines
    • Control=InvoiceLineAmount
    • SelectionRule=ByContext(&ContextGridInvoiceLines)
  • VerifyControlTextTable (ahora al comando le indico que utilice el contexto adecuado)
    • Grid=GridInvoiceLines
    • Control= InvoiceLineNumber
    • SelectionRule=ByContext(&ContextGridInvoiceLines)

Una vez que se construyó el contexto, el mismo se puede utilizar para todos los comandos que se desee.