gwt datagrid tabpanel celltable

GWT Datagrid no muestra datos, pero los contiene



tabpanel celltable (3)

En mi caso fue causado por esto: filas DataGrid no visibles en la segunda pestaña de TabLayoutPanel

cellTable convertir una cellTable en una datagrid porque quiero agregar un controlador de búsqueda más adelante y, por lo tanto, necesito encabezados de columna fijos. En este momento extiendo la clase celltable / datagrid y coloco el widget en un simplelayoutpanel y lo agrego a mi tabpanel .

Si uso la celltable , todo funciona bien y la información aparece. Si cambio el tipo de la clase a la datagrid datos, los datos aparecen a veces arriba (los nombres de las columnas siempre están ahí). Para agregar algo a la tabla, utilicé setRowData o un dataProvider . Si configuro puntos de interrupción para retrasar la carga del contenido de la tabla, la tabla a veces contiene datos. Si luego llamo al método de redibujado para la tabla, la tabla muestra la información correcta. Pero la tabla debe cargar automáticamente el contenido. En otras "posiciones" de mi proyecto también usé la cuadrícula de datos y funcionó en Dialogboxes .

Creo que debe haber un error con el dibujo de los elementos, porque si .getRowCount en la tabla o los elementos obsoletos .getDisplayedItems , me devuelve el número correcto de elementos que deberían estar en la tabla. Además, si agrego un modelo de selección a la tabla y selecciono un elemento, el elemento contiene datos válidos.


Aquí están mis 2 centavos.

Cuando se trata de renderizar un DataGrid fuera de un "LayoutPanel o Panel que implementa la estructura de árbol ProvidesResize", descubrí que siempre debo tener en cuenta lo siguiente:

  1. Como esta pregunta explica, la propiedad DataGrid de altura necesita un valor explícito, por ejemplo, "123px". Sin esto, DataGrid no muestra sus filas de datos (incluso si están en el DOM).

  2. Si coloca un DataGrid dentro de una pestaña DecoratedTabPanel desenfocada , se debe invocar a DataGrid.redraw () cuando dicha pestaña obtiene el foco. Nuevamente, sin esto, DataGrid no muestra sus filas de datos (incluso si están en el DOM).

Espero que esto ayude.


DataGrid requiere que se coloque en un LayoutPanel o Panel que implemente la interfaz ProvidesResize para que sea visible. ScrollPanel implementa esa interfaz.

Además, esta cadena de LayoutPanels desde su DataGrid hasta su elemento / panel raíz debe estar intacta. Ese parece ser el caso en su jerarquía de panel.

Finalmente, debe usar RootLayoutPanel en lugar de RootPanel para agregar sus LayoutPanels. Entonces, ¿se aseguró de agregar su SimpleLayoutPanel al RootLayoutPanel?

Consulte también este GWT: DataGrid: ajuste la altura 100% no se representa correctamente