Ordenar un nuevo registro en la rejilla


([N4] rodolformg) #1

Hola a todos,

Tengo una tabla de familias de productos con tres campos: ID, NAME, OBSERVACIONES, tengo su rejilla correspondiente. Cuando ordeno la rejilla por la columna "Nombre" (Haciendo click en la cabecera de la columna) y agrego un nuevo registro a la tabla, el nuevo registro es colocado siempre al final de la rejilla (Hasta abajo) sin tomar en cuenta el orden en que debería agregarse, ¿Hay alguna manera de que una rejilla acomode el nuevo registro de acuerdo a la ordenación que tienen la rejilla en ese momento? ¿Quizás haya alguna manera de conocer la ordenación que tiene una rejilla y así poder acomodar el nuevo registro manualmente?

He agregado una imagen que muestra el comportamiento que describo. Gracias.

Saludos,

Rodolfo

[attachment=18881,1519]


([N4] eic) #2

Hola.

Usando un simple formulario de alta, no hay ningún modo, pues el registro nuevo siempre va al final de la rejilla.

Lo que podrías hacer es que:

- El botón Nuevo, en vez de llamar al formulario de Alta, dispara una señal
- Desde la rejilla, creas una conexión de evento del tipo "Acción disparada", y en la acción escoges la acción del botón Nuevo, y ejecutas un evento de la rejilla (p.ej., NUEVO_REG)
- En el evento, realizas el alta manualmente (Crear ficha en memoria, Pedir formulario, Alta de ficha), envías el alta a la lista de la rejilla (Añadir ficha a la lista en curso) y, después, vuelves a reordenar la lista de la rejilla (Ordenar lista).

Saludos,

Fran Varona


([N4] mdelgado) #3

@rodolformg.gmail

Con el permiso de Fran, es más sencillo aún:

1) A la rejilla le asignas un formulario de alta
2) Creas un Evento "ALTA"
3) Al botón de alta le pones como comando Ejecutar evento y le asignas el evento ALTA
4) El evento tabla pones:

Interfez formulario de alta(OBJETO_REJILLA, bOk)
IF(bOk)
reordenar la kista de la rejilla(OBJETO_REJILLA)

Saludos
Miguel D.


([N4] mdelgado) #4

Por cierto, el método REORDENAR LA LISTA DE LA REJILLA sólo sirve si conoces a priori el órden con que partías en la lista antes de pulsar el botón alta.

Como las cabeceras de las rejillas no disparan actualmente ningún evento, es imposible (hasta donde yo sé) saber el orden con el que partías, por lo tanto, no podrás reordenar de forma automática en ningún caso.

Otra peculiaridad negativa del método, es que een la nube sobrecargas demasiado. la ordenación es un proceso lento en Velneo y en la nube hay que evitarla, sobre todo en listas grandes.

Saludos
Miguel D.


([N4] rodolformg) #5

Hola,

Muchas gracias a todos por sus respuestas.

Veo que no es fácil el tema, sobre todo debido a que normalmente la rejilla podría estar ordenada por cualquiera de las tres columnas y, como bien apunta Miguel, no hay por ahora manera de saber cual de las tres determina el orden en un momento dado.

Se me ocurre que tal vez sea posible, desactivar la posibilidad de ordenar haciendo click en la cabecera de las columnas y establecer el orden de la rejilla utilizando un combo que forme parte del formulario. Desconozco si hay manera de desactivar la ordenación vía el click en la cabecera de la rejilla, sin embargo aun y cuando se pueda lograr resultaría un procedimiento poco estándar.

También me gustaría saber su opinión en términos de diseño de la funcionalidad de la aplicación, yo vengo de un lenguaje en el que esta era la forma común de trabajo: Mostrar una rejilla con determinados registros y al dar de alta un nuevo registro, si este cumple con el criterio para ser mostrado, se incluye en la posición que le toca, si no cumple con el criterio simplemente se hace el alta pero no se muestra en la rejilla. Ahora con la forma de trabajo de Velneo es perfectamente posible hacer el alta de un registro sin necesidad de pasar por la rejilla, así que sólo estaría el tema de utilizar la rejilla y su procedimiento de búsqueda para modificar registros o aplicar algún filtro y obtener la lista de registros que lo cumplen. Incluso veo como opción que, al dar de alta un registro en la rejilla, se limpie la lista de la rejilla y se muestre sólo el nuevo registro.

Para la funcionalidad de esta mi primera aplicación estoy intentando ceñirme a las recomendaciones de diseño de vDiseño y la funcionalidad de las Open Apps que he visto y que ya hacen uso de vDiseño, en particular vBase y vConta; el caso de la ordenación que expongo se presenta en ambas, es por eso que me ayudaría mucho una opinión desde el punto de vista funcional, no quiero enfrascarme en buscar algún comportamiento en especial cuando hay otras maneras funcionales de resolver el tema.

Agradezco desde ya su ayuda.

Saludos,

Rodolfo


([N4] mdelgado) #6

@rodolformg.gmail

Hola de nuevo. Efectivamente, no es posible desactivar la ordenación automática en rejillas. Es algo de lo que ya me quejé en su momento a Velneo. Sobre todo por que si lanzas una ordenación sobre una rejilla con muchos registros en la nube tarda mucho en cargar.

En cuanto a la funcionalidad, no veo ningún problema en que el nuevo registro se coloque al final de la lista. Yo lo veo hasta conveniente, ya que si estás en una lista con muchos registros y al dar de alta se insertrse en su lugar según orden sería difícil para el usuario saber dónde está el nuevo registro. Al colocarse el último en la lista es fácil de localizar. Como te digo,

Saludos
Miguel D.