Refrescar rejilla


([N1] Vurtne) #1

Hola estoy peleando con un formulario que muestra una rejilla, cuando doy de alta con la toolbar de la rejilla un registro internamente se genera otro más, pero al aceptar sólo muestra el generado en el formulario y no el generado por proceso.

Existe alguna señal, u otro metodo para forzar el refresco de la rejilla, he probado on show, y otro pero no lo consigo…

Alguien se le ocurre algo ???

Tengo que cerrar y volver a abrir el formulario para que aparezcan todos los registros


([N1] Anacreonte) #2

Hola, ¿has probado con un simple botón de refrescar en el formulario donde tengas la rejilla?. Con un simple “Interfaz Recalcular (CONTROL)” lo tienes solucionado.

Un saludo.
Paco Haro.


([N3] GSI) #3

Se trata de hacer algo transparente al usuario, es una entrada de asientos en contabilidad y no puede estar pulsando continuamente para ver por donde va, debe ser algo automático


([N1] Anacreonte) #4

También tienes el timer del formulario.


([N2] Mgalvezh) #5

Tu mismo has dicho que se genera por proceso, pues en ese proceso le metes un interfaz:reacalcular, o si el formulario usa una vista de datos supongo que la cargas en el on show ? con un evento pues vuelves a ejecutar el evento y listo


([N2] AyudaVelneo) #6

Hola:

“Con la iglesia hemos topado, amigo Sancho” como diría Don Quijote de la Mancha.

Te acabas de encontrar con uno de los problemas de Velneo: el contexto en el que te encuentras y la visibilidad de otros controles… y no tiene fácil solución.

Es probable que la rejilla la tengas en una vista de datos y tengas una toolbar asociada a la rejilla. Desde esa rejilla darás altas y desde el alta (o bien en en botón aceptar o bien en el trigger de tabla) darás nuevas altas en función de algún campo. El problema es que esas nuevas “altas” no se enteran del contexto en el que han sido creadas, por lo tanto no se visualizar hasta que no se vuelve a cargar la vista de datos… cosa que desde el proceso desde el que son creadas, no se puede hacer.

De momento no te queda otra que poner un nuevo botón en la toolbar para “refrescar” la vista de datos y que aparezcan los nuevos registros creados en el proceso (creo que Velneo lo hace así en los cobros/pagos de vErp)

Un saludo


([N3] pacosatu) #7

Hola GSI o ¿Vurtne?

Sí, es cierto que refrescar una Rejilla tiene su problemática, pero no es problema de Velneo sino de entender cómo funciona ese Objeto.

La Rejilla no es más que un contenedor “estático” de registros (Lista en memoria) que previamente hemos rellenado mediante la salida de un Proceso. El conjunto Proceso/Rejilla es la Vista de datos. Contenedor “estático” significa que no hay eventos automáticos que añadan o quiten registros, aunque sí es capaz de reflejar los cambios que se producen en las distintas columnas que están conectadas a los campos de la tabla en la caché de vClient. Por ejemplo, si eliminamos un registro en el servidor, la rejilla mostrará al cabo de un rato una fila con todas las columnas vacías.

Entonces debe ser el programador el que habilite la manera de refrescar la Lista de registros mostrados en la Rejilla. Velneo nos facilita ese trabajo cuando usamos la Toolbar y las acciones asociadas a la Rejilla. De alguna manera Velneo detecta que hemos salido del formulario de edición con la opción Aceptar y añade la nueva ficha a la Rejilla. Algo parecido ocurre con la opción de Eliminar.

Si queremos refrescar la Rejilla desde cualquier parte de nuestra aplicación habrá que recurrir a diferentes métodos:

  • Desde la interfaz del formulario bastará casi siempre con usar el comando Recalcular rejilla que ejecuta de nuevo el proceso
  • Otra alternativa desde la interfaz del formulario serán los comandos Añadir ficha a la Lista y los comandos de Cesta
  • Desde el API obtenemos la referencia a la Lista de la Rejilla mediante la clase VRegisterList y usamos las funciones append, remove, …

Por supuesto, cualquier cosa antes que tener que cerrar y abrir de nuevo el formulario.

Saludos
Paco Satué