GeneXus - Problema con Grid en genexus 9

 
Vista:

Problema con Grid en genexus 9

Publicado por Gonzalo Jorquera (1 intervención) el 30/03/2015 17:49:15
Estimados,

En mi proyecto tengo 2 tipos de grid:

1) Con atributos y variables.
2)Solo variables (es decir sin tabla base).

Para el segundo, es un web panel con un grid donde la función "RecordCount" entrega un "-1", leyendo me entere que era por no tener atributos ("The Grid does not have base table Attributes must be included in the Grid to indicate navigation"). Sumado a lo anterior los botones de navegación, avanzar página del grid, retroceder, ir al inicio, ir al final funcionan igual de mal.

Las preguntas serian,

¿ existe un modo de ocupar la paginación de genexus con solo variables ? Si es si, como se hace (he buscado y no he encontrado).

Al ocupar solo variables, yo las lleno en el evento Load ¿está bien ?, si esto esta bien como se relaciona el refresh con el load. Pregunto porque cuando es un grid con tabla base, esto es automatico. Y me percato que al inicio no carga los elementos pero, si avanzo pagina muestra los registros.

la estructura de mi web panel es la siguiente:

Event Load
For each order //ordeno

Where //realizo where
Defined by //Tiene Vinculacion

For each order //ordeno elementos
Where //realizo where
//lleno variables
&Cont = &Cont + 1
load
EndFor
EndFor
&Registros = Grid1.RecordCount
EndEvent // Load


Primer problema, cuando se termina &Registros y &Cont son distintos, siempre registros tiene un refreso desactualizado. Es decir si eran 20 elementos, registros dice 0 y count dice 20, si avanzo de página registros dice 20 y count dice 40, y asi hasta el infinito.

Event Refresh
&Registros = Grid1.RecordCount
EndEvent // Refresh

/*****************************************************************************/
Event 'Limpiar'
&flag = 0
do 'limpiar_var'
EndEvent // 'Limpiar'
/*****************************************************************************/
Event Enter
&Pag = 1
&Flag = 1
grid1.FirstPage()
&Tot = Grid1.PageCount
EndEvent // Enter
/*****************************************************/
Event 'Last'
&Flag = 1
Grid1.LastPage()
&Pag = Grid1.PageCount
&Tot = Grid1.PageCount
EndEvent
/*****************************************************/
Event 'First'
&Flag = 1
Grid1.FirstPage()
&Pag = 1
&Tot = Grid1.PageCount
EndEvent
/*****************************************************/
Event 'back'
&Flag = 1
&pag = iif(&Pag > 1, &Pag-1, &Pag)
&Pag = iif(&Pag = 0, 1, &Pag)
grid1.PreviousPage()
&Tot = Grid1.PageCount
EndEvent // 'back'
/*****************************************************/
Event 'next'
&Flag = 1
&pag = iif(&Pag < Grid1.PageCount, &Pag + 1, &Pag)
grid1.NextPage()
&Tot = Grid1.PageCount
EndEvent // 'next'




Event 'Buscar'
&Pagina = 0
&Cont =0
&Filtro = 0
&Filtro += iif(&variable.IsEmpty(), 0, 1)


If &Filtro >= 1
&flag = 1 //Permite controlar la visualizacion de la grilla
&Pagina = 1
&Cargar = 'S' //Permite controlar cuando se debe cargar la grilla
Else
msg('Debe ingresar por lo menos 1 filtro para realizar la búsqueda')
&flag = 0
Endif
EndEvent // 'Buscar'



El evento buscar es cuando selecciono el botón buscar en los filtros, otra pregunta sería, en que momento se une ese evento con el "refresh" y el "load".

Como comentario anexo, tengo solo 1 mes de experiencia en Genexus. Así que si cometo errores de concepto, pido disculpas de antemano seguiré estudiando

saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder