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", я обнаружил, что мне всегда нужно иметь в виду следующее:
As этот вопрос объясняет, свойство height DataGrid требует явного значения, например "123px". Без этого DataGrid не показывает свои строки данных (даже если они находятся в ДОМ.)
Если поместить DataGrid внутрь нецеленаправленных вкладка DecoratedTabPanel, DataGrid.redraw () необходимо вызвать, когда такая вкладка получает фокус . Опять же, без этого DataGrid не показывает свои строки данных (даже если они находятся в DOM).
надеюсь, это поможет.
в моем случае это было вызвано это: строки DataGrid не видны во второй вкладке TabLayoutPanel