Пагинация не работает на 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()
или что-то вроде этого.