Разбиение на страницы не работает в 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. Это так?

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

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


person EMM    schedule 15.01.2013    source источник


Ответы (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() или что-то в этом роде.

person TuR    schedule 15.01.2013
comment
Я пробовал это раньше, и, возможно, я делал что-то неправильно в provider.getList().add(), но на этот раз я пропустил его и просто использовал ListDataProvider‹Employee› provider = new ListDataProvider‹Employee›(tableRowData); провайдер.addDataDisplay(empTable); и он работает нормально как-то. :) Большое спасибо за помощь. - person EMM; 15.01.2013