tamaño personalizar partes nombre net las formato encabezado diseño dar como columnas columna cambiar ajustar flex datagrid column-width

flex - personalizar - partes de un datagrid



Ancho de columna Flex DataGrid (3)

¿Está horizontalScrollPolicy establecido en falso en la cuadrícula de datos?

"Si la propiedad horizontalScrollPolicy de DataGrid es falsa, todas las columnas visibles deben caber en el área visualizable, y DataGrid no siempre respetará el ancho de las columnas si el ancho total de las columnas es demasiado pequeño o demasiado grande para el área visualizable".

http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#width

En mi aplicación flexible, almaceno los anchos y la visibilidad de las columnas en un archivo xml. Cuando la aplicación se carga, lee desde el archivo xml y establece los valores de las columnas según corresponda:

for(i = 0; i < columnsOrder.length; i++){ newOrder[i] = myDG.columns[Number(columnsOrder[i]) - 1]; newOrder[i].visible = (Number(columnsVisiblity[i]) == 1); newOrder[i].width = Number(columnsWidth[i]); } myDG.columns = newOrder; myDG.invalidateList();

El problema parece ser establecer la visibilidad (establece el campo visible correctamente pero ensucia el ancho) ... Intenté configurarlo después de establecer el ancho (fuera del ciclo) y antes del ciclo también. Cambia el tamaño de las columnas correctamente si no hago nada con la visibilidad.

¿Algunas ideas?


Pude hacerlo funcionar llamando al ciclo de arriba en una función dos veces ... la primera vez que agrega las columnas visibles, la segunda vez que establece el ancho correcto. No es la mejor solución, pero no puedo dedicarle más tiempo.


Agregue una declaración de importación en la parte superior de su archivo de clase:

importar mx.core.mx_internal;

A continuación, elimine utilizando el espacio de nombres mx_internal, elimine el propietario de la columna, cambie el ancho y luego reasigne el elemento primario:

public static function resizeColumn(col:DataGridColumn, size:int):void { var owner:* = col.mx_internal::owner col.mx_internal::owner = null; col.width = size; col.mx_internal::owner = owner; }

Esto debería hacer el truco (bueno, lo hizo por nosotros después de un par de días de jurar)