【发布时间】:2018-03-23 15:34:04
【问题描述】:
我有一个由 ListDataProvider 提供的带有分页功能的 CellTable。我将页面大小设置为 5,期望当 ListDataProvider 中有超过 5 行的倍数时,页码会增加,反之亦然。我有添加和删除按钮,可用于添加和删除单元格行。
问题在于分页以错误的 ListDataProvider 大小添加和删除页面。例如,由于页面大小为 5,我希望当我将第 6 行添加到表中时,页面大小会增加。但是,当添加第 7 行而不是第 6 行时,页面大小会增加。
页面不以第 6 个条目递增 -
页面以第 7 个条目递增 -
删除条目时问题也是一样的。当行大小减少到 4 而不是 5 时,页面会更新。如果我刷新页面,问题不会持续存在。例如,当我添加第 6 个条目并刷新页面时,页码会按预期递增,反之亦然。
我尝试对此进行调试,但无法弄清楚为什么会发生这种情况。我在这里做错了什么?我的代码 -
@UiField(provided=true) CellTable<MyClass> myTable = new CellTable<MyClass>();
final ListDataProvider<MyClass> myProvider = new ListDataProvider<MyClass>();
final SingleSelectionModel<MyClass> selectionModel = new SingleSelectionModel<MyClass>();
@UiField(provided=true) Pagination pagination = new Pagination(PaginationSize.SMALL);
SimplePager pager;
myProvider.addDataDisplay(myTable);
// create and add columns
createPagination();
private void createPagination() {
myTable.setSelectionModel(selectionModel);
pager = new SimplePager(TextLocation.CENTER, ((SimplePager.Resources)GWT.create(SimplePager.Resources.class)), false, 0, false);
pager.setRangeLimited(false);
pager.setDisplay(myTable);
pager.setPageSize(5);
pagination.rebuild(pager);
}
我还在onSuccess() 方法中为添加和删除功能调用createPagination() 方法。
用于 CellTable 和分页的 .ui.xml -
<bc:CellTable ui:field="myTable" striped="true" bordered="true" width="800px" styleName="{style.myTableStyle}"/>
<b:Pagination ui:field="pagination" />
【问题讨论】:
-
ListDataProvider由一个列表支持。你确定你是通过ListDataProvider而不是直接在列表中修改行吗?只有对ListDataProvider::getList()返回的列表的修改才会反映在模型中。
标签: java gwt pagination uibinder celltable