GWT Datagrid не показывает данные, но содержит их

Я пытаюсь преобразовать cellTable наdatagrid, потому что я хочу добавить обработчик поиска позже, и поэтому мне нужны фиксированные заголовки столбцов. На данный момент я расширяю celltable/datagrid класс и поместите виджет в simplelayoutpanel и добавьте это к моему tabpanel.

если я использую celltable все работает нормально и данные показывает. Если я изменю тип класса на datagrid, данные иногда отображаются (имена столбцов всегда есть). Чтобы добавить что-то в таблицу, которую я использовал setRowData или dataProvider. Если я устанавливаю точки останова для задержки загрузки содержимого таблицы, таблица иногда содержит данные. Если я позже вызову метод redraw для таблицы, таблица покажет правильную информацию. Но таблица должна автоматически загружать содержимое. На других "позициях" моего проекта я также использовал datagrid, и он работал в Dialogboxes.

Я думаю, что должна быть ошибка с рисунком элементов, потому что, если я позвоню .getRowCount на столе или устаревшие .getDisplayedItems, он возвращает мне правильное число элементов, которые должны быть в таблице. Также, если я добавляю модель выбора в таблицу и выбираю элемент, элемент содержит допустимые данные.

3 ответов


DataGrid требуется поместить в LayoutPanel или панель, которая реализует интерфейс ProvidesResize, чтобы быть видимым. ScrollPanel реализует этот интерфейс.

кроме того, эта цепочка LayoutPanels от вашего DataGrid до вашего корневого элемента/панели должна быть непрерывной. Похоже, это имеет место в вашей иерархии панелей.

наконец, вы должны использовать RootLayoutPanel вместо RootPanel, чтобы добавить свои LayoutPanels. Так вы убедились, что вы добавляете SimpleLayoutPanel к RootLayoutPanel ?

также относятся к этому GWT: DataGrid-установить высоту 100% не рендеринг должным образом


вот мои 2 цента.

когда дело доходит до визуализации DataGrid вне правильно сформированной" LayoutPanel или панели, которая реализует древовидную структуру ProvidesResize", я обнаружил, что мне всегда нужно иметь в виду следующее:

  1. As этот вопрос объясняет, свойство height DataGrid требует явного значения, например "123px". Без этого DataGrid не показывает свои строки данных (даже если они находятся в ДОМ.)

  2. Если поместить DataGrid внутрь нецеленаправленных вкладка DecoratedTabPanel, DataGrid.redraw () необходимо вызвать, когда такая вкладка получает фокус . Опять же, без этого DataGrid не показывает свои строки данных (даже если они находятся в DOM).

надеюсь, это поможет.


в моем случае это было вызвано это: строки DataGrid не видны во второй вкладке TabLayoutPanel