Altura variable de filas en rejilla


([N1] vlinares) #1

Buenos días…

¿Es posible hacer una rejilla que las filas sean de altura variable?

Saludos
Vicente


([N1] wikan) #2

En teoría con la función resizeRowsToContents deberías poder. Tienes que ejecutarla después que la rejilla esté completamente pintada con los datos.


([N1] vlinares) #3

Buenas tardes…

Debo estar haciendo algo mal, por que no funciona.

He creado un manejador de eventos

con la función
resizeRowsToContents();

que lanzo en el on-show de la rejilla.

¿Correcto?

Muchas gracias por tu ayuda.

Saludos
Vicente


([N1] wikan) #4

Buenas, en principio lo correcto sería en el “Post-ini” ya que necesitas que la rejilla contenga ya los datos para poder redimensionar al contenido.

Con el “On-show” no se como actua la rejilla, si se lanza junto con el formulario al mostrarse o solo una vez. Prueba con “Post-ini” mejor.

Si no te funciona, también podrías redimensionarla desde un manejador del formulario que la contenga.


([N1] vlinares) #5

Gracias de nuevo,
Lo he intentando pero no quiere.

Algo estoy haciendo mal.

Una duda, ¿esta función se puede llamar directamente desde el manejador de evento?

Saludos
Vicente


([N1] wikan) #6

Yo uso la que modifica el ancho de las columnas, ahora no lo tengo delante, creo que la tengo en el formulario que contiene la rejilla.

Hago la carga de datos de la rejilla y luego lanzo otro manejador que obtiene la rejilla y le aplica la función.


([N1] vlinares) #7

Como veras no controlo demasiado esto,
cuando tengas un momento, ¿podrías pasarme el ejemplo que tienes funcionado? creo que así lo entenderé mejor.

Saludos
Vicente.


([N1] wikan) #8

No hay problema, desde que llegue te digo como lo monte. Supongo que será lo mismo para ajustar el ancho de las columnas como el alto de las filas.


([N1] vlinares) #9

Buenos días…

Sigo a vueltas con lo mismo…
He forzado el proceso lanzado la acción desde una Toolbar y en el pié me aparece el siguiente error:

“ReferenceError: Can’t find variable RowsToContents<global>() at…”

Gracias por tu ayuda.
Saludos
Vicente


([N1] wikan) #10

Tiene toda la pinta que estás usando el método sin hacer declarar primero la variable con el objeto de la rejilla.

Yo lo uso así.

var rejilla = theRoot.dataView().control("LST");
rejilla.resizeColumnToContents( 3 )
rejilla.resizeColumnToContents( 6 )

Eso lo tengo en un manejador de eventos en javascript y lo ejecuto dentro de otro manejador después de haber cargado los datos en la rejilla.


([N1] vlinares) #11

Hola Manuel…
Nada, no hay manera…

Entiendo que “LST” es una variable en la que recibe el nombre de la rejilla que quiero redimensionar…

En el primer manejador cargo en la variable LST (definida en la rejilla) el nombre de la rejilla “SMFTrafico_app/LINEAS_DE_FACTURA”

y después desde este primer manejador lanzo el de js.

Y no me quiere y no va…

Lamento darte la paliza. De momento no es urgente y lo dejo “madurar”, osea, estudiar js y como funciona.

Saludos.
Vicente


([N1] wikan) #12

Buenas, si el primer paso es conocer el lenguaje javascript, es muy sencillo realmente, además hay muchísima documentación en internet

LST, no es una variable, es cadena que contiene que el identificador de la rejilla. Fijate que está entre comillas.

var rejilla = theRoot.dataView().control("LST");
Esto si guarda en la variable rejilla el objeto rejilla en sí.

Después de obtener el objeto, si puedo usar sus métodos

rejilla.resizeColumnToContents( 3 )
rejilla.resizeColumnToContents( 6 )

Lo primero de todo siempre es obtener el objeto que vas a usar, para ello y en la gran mayoría de los casos.
var variable_que_contiene_el_objeto = theRoot.dataView().control("IDENTIFICADOR_DEL_OBJETO");

Una vez que lo tienes, solo tienes que revisar la documentación de cada objeto para usar sus métodos.