GeneXus - Refresh Keep no funciona

 
Vista:

Refresh Keep no funciona

Publicado por José Luis (7 intervenciones) el 13/10/2007 04:28:11
Hola. Tengo un WKP con un subfile, un boton de comando que invoca a una transacción que inserta un nuevo registro y un combo que le permite al usuario seleccionar el orden de los registros del subfile (generalmente más de un campo). Para cumplir con este requerimiento utilizo solo variables en el subfile y programo un For Each explícito en el evento load como este:
For Each
Order None When &Orden = 0
Order PrdDsc When &Orden = 1
Order ModBaseId,PrdDsc When &Orden = 2
Order PaisId,PrdDsc When &Orden = 3
Where PCoId = &PCoId
&PrdCodId = PrdCodId
&ModBaseId = ModBaseId
....
Load

Hasta alli todo bien, el problema está con el Refresh Keep que incluyo en el código de evento del botón de comando debido a que me posiciona en la primera fila del subfile.
¿Acaso el refresh keep no funciona cuando el subfile tiene solo variables? ¿Cómo podría tener atributos en el subfile, y permitirle al usuario visualizar las filas del subfile ordenadas por diferentes campos (más de uno)? . Intente con la regla order del WKP pero esta es incondicional (siempre es el mismo ordenamiento).

Espero sus comentarios amigos.

Gracias
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
Imágen de perfil de Patricio Ojeda v
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Refresh Keep no funciona

Publicado por Patricio Ojeda v (475 intervenciones) el 14/10/2007 01:14:36
No entiendo mucho cual es tu problema. Al parecer quieres ordenar el subfile por varios criterios de busqueda. Yo haria lo siguiente.

Event 'Buscar'
g1.Refresh()
EndEvent // 'Buscar'

Event g1.Load
Do case
case primer criterio de busqueda
For each order atributox
Where Atributo = &variable
&variable1 = atributo1
&variable2 = atributo2
load
Endfor
case segundo criterio de busqueda
For each order atributox atributoy
Where Atributo = &variable
&variable1 = atributo1
&variable2 = atributo2
load
Endfor
case tercercriterio de busqueda
For each order atributox atributoy atributoz
Where Atributo = &variable
&variable1 = atributo1
&variable2 = atributo2
load
Endfor
Endcase
EndEvent // g1.Load

Espero te sirva y espero haberte entendido,

Saludos

Patricio Ojeda V
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Refresh Keep no funciona

Publicado por José Luis (7 intervenciones) el 14/10/2007 05:03:02
El ordenamiento por varios criterios funciona solo cuando se utiliza variables en el subfile (For each explicito). Eso no sería un problema si el Refresh Keep que incluyo en el código de evento de un botón funcionara correctamente. Lastimosamente la fila activa del subfile es siempre la primera, luego de la ejecución del Refresh Keep.

Si utilizo atributos en al menos una columna del subfile (For each implicito) no puedo ordenar por múltiples criterios; sin embargo el Refresh Keep funciona correctamente.

Que me comentan al respecto

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Patricio Ojeda V
Val: 73
Oro
Ha aumentado 1 puesto en GeneXus (en relación al último mes)
Gráfica de GeneXus

RE:Refresh Keep no funciona

Publicado por Patricio Ojeda V (475 intervenciones) el 15/10/2007 23:32:19
Jose Luis, lo que yo te decia era que en vez de tener:

For Each
Order None When &Orden = 0
Order PrdDsc When &Orden = 1
Order ModBaseId,PrdDsc When &Orden = 2
Order PaisId,PrdDsc When &Orden = 3
Where PCoId = &PCoId
&PrdCodId = PrdCodId
&ModBaseId = ModBaseId
....
Load
Endfor

Pruebes con:

Do case
case &Orden = 0
For Each
Where PCoId = &PCoId
&PrdCodId = PrdCodId
&ModBaseId = ModBaseId
....
Load
Endfor
case &Orden = 1
For Each Order PrdDsc
Where PCoId = &PCoId
&PrdCodId = PrdCodId
&ModBaseId = ModBaseId
....
Load
Endfor
case &Orden = 2
For Each Order ModBaseId PrdDsc
Where PCoId = &PCoId
&PrdCodId = PrdCodId
&ModBaseId = ModBaseId
....
Load
Endfor
case &Orden = 3
For Each Order PaisId PrdDsc
Where PCoId = &PCoId
&PrdCodId = PrdCodId
&ModBaseId = ModBaseId
....
Load
Endfor
Endcase

En realidad no existen muchas opciones para lo que quieres hacer, o por lo menos a mi no me ha tocado hacer lo que tu ahora estas necesitando.

Lo que si pasa a veces es que un codigo no funciona como deberia, y un codigo muy similar pero hecho de otra forma si funciona. Por eso mi idea era que pruebes con lo que te envié, ya que en una de esas funciona...

Saludos y suerte

Patricio Ojeda V
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar