Пагинация не работает на GWT DataGrid

У меня есть DataGrid, который показывает, скажем, данные сотрудника. Например, каждая строка соответствует сотруднику (имя, возраст, зарплата), а имя + возраст - это якоря, а зарплата - в виде простого текста.

Пока все работает нормально, но так как количество строк очень велико, мой браузер начинает зависать. Поэтому я решил использовать нумерацию страниц в моей DataGrid. Я сделал что-то вроде:

List<Employee> tableRowData = new ArrayList<Employee>();
DockPanel dock = new DockPanel();

empTable = new DataGrid<Employee>(tableRowData.size());
SimplePager pager = new SimplePager(TextLocation.CENTER);
pager.setDisplay(hotelsTable);
pager.setPageSize(25); 

dock.add(empTable, DockPanel.CENTER);
dock.add(pager, DockPanel.SOUTH);
dock.setWidth("100%");
dock.setCellWidth(empTable, "100%");
dock.setCellWidth(pager, "100%");

empTable.setRowCount(1, true);
empTable.setRowData(0, tableRowData);
empTable.setStyleName(style.hotelTable());
empTable.setWidget(dock);

Теперь мой пейджер и таблица отображаются нормально с первыми 25 строками, но при нажатии на следующую кнопку на пейджере тело таблицы исчезает, и некоторая полоса загрузки появляется в теле навсегда.

Я также где-то читал, что пейджинг невозможно без использования DataProviders. Это так?

Я видел пример пейджинга здесь. Это выглядит легко, но я запутался при использовании в моем случае. Любая помощь высоко ценится. Кроме того, я хотел бы, чтобы вы могли предоставить основной код для меня.

Спасибо, Мохит

1 ответ

Решение

Я думаю, что вам не хватает ListProvider. В вашем случае. Вы должны попробовать:

empTable = new DataGrid<Employee>(25);
ListDataProvider<Employee> provider = new ListDataProvider<Employee>(tableRowData);
provider.addDataDisplay(empTable);
.
.
.
//empTable.setRowCount(1, true);
//empTable.setRowData(0, tableRowData);

И добавить данные с помощью provider.getList().add() или что-то вроде этого.

Другие вопросы по тегам