GWT SimplePager - 获取不正确的寻呼机索引 onclick 的 LastButton
Posted
技术标签:
【中文标题】GWT SimplePager - 获取不正确的寻呼机索引 onclick 的 LastButton【英文标题】:GWT SimplePager - Getting Incorrect pager index onclick of pager's LastButton 【发布时间】:2013-02-22 07:39:49 【问题描述】:我正在使用我的 GWT 2.3 Celltable 和 SimplePager
通过扩展 SimplePager 类编写 CustomPager。
使用 ListBox 为 celltable 显示不同的页面大小,例如 10,20,50,100
当页面大小为 10 时,我在 celltable 中显示 11 条记录。(1 条空记录(行)+ 10 条记录(行)
当 pageSize = 20 然后 21 行(记录)时, 当 pageSize = 50 然后 51 行(记录)时, 当 pageSize = 100 然后 101 行(记录)。
Whenever selected page size 50 or 100, pager & display returning correct values so pagination working correctly, but not working in case of 10 & 20. Strange :|
调试后发现如下:
当页面大小为 10 或 20 时,单击分页器的 lastPage 按钮会得到不正确的分页器 pageIndex 和不正确的 startIndex 值。
错误的 startindex = display.getVisibleRange().getStart()
//Following method called when button click event fires
protected void onRangeChanged(HasData<RecordVO> display)
info("Called onRangeChanged method of AsyncDataProvider");
eventType = "PAGINATION";
setPrevPageIndexForChangedRecord();
cellTable.setRowCount(searchRecordCount, false);
startRowIndexOfPage = display.getVisibleRange().getStart(); // startRowIndex;
// ------ My code is here
点击寻呼机时的错误值如下 最后一个按钮假定页面大小=10,即 1 条虚拟记录 + 10 条实际记录。
startRowIndexOfPage = display.getVisibleRange().getStart(); // startRowIndex;
info("Start row index of page = "+startRowIndexOfPage);
info("GWT Current page index = "+pager.getPage());
info("GWT Total page count = "+pager.getPageCount());
info("Gwt Total page size = "+pager.getPageSize());
info("Gwt page start index = "+pager.getPageStart());
当页面大小=10 时,分页器最后一个按钮的输出 onclick 不正确:
(-:-) 2013-03-05 09:53:22,136 [INFO ] Start row index of page = 990
(-:-) 2013-03-05 09:53:22,150 [INFO ] GWT Current page index = 90
(-:-) 2013-03-05 09:53:22,178 [INFO ] GWT Total page count = 91
(-:-) 2013-03-05 09:53:22,191 [INFO ] Gwt Total page size = 11
(-:-) 2013-03-05 09:53:22,204 [INFO ] Gwt page start index = 990
主要问题是 pager.getPage() 返回 90 而不是最后一页索引:(
有什么办法可以解决这个问题吗?请为此问题提供一些指示/解决方案。
提前致谢。
【问题讨论】:
发布您的查询字符串,或者您在点击最后一个分页按钮时获取结果的代码 你能告诉我们,你有多少条记录,当你选择 10 或 20 并单击最后一个按钮时,你期望什么值以及它返回什么。 @Adarsha 共有 1000 条记录。单击最后一个按钮页面应设置为最后一页,以便当从列表框中选择页面大小 = 10 时,最后 10 条记录将显示在表格中。但是点击最后一个按钮寻呼机移动到第 91 页:(我们可以识别/检查 OnRangeChange 方法,即用户点击最后一个按钮 在您提到的问题中,当页面大小为 10 时,您将显示 10 + 空行 = 11 行。是那 1000 条记录中的空行部分吗??????或者它只是你明确添加到每一页的一个虚拟行????当页面大小为 10 时,单元格表中只能显示 10 条记录。空行 + 9 条记录 .... @Adarsha 是的,当页面大小为 10 时,我显示 10 + 空行 = 11 行。空行不是 1000 条记录的一部分,每页需要 1 个空行。普通用户不会将空行视为记录,因此 1 空行 + 10 行(记录)。当页面大小=10 表示 10 条记录时,空行 + 9 条记录对普通用户没有意义。 【参考方案1】:尝试使用以下算术运算找到startRowIndexOfPage
-
startRowIndexOfPage = display.getVisibleRange().getStart() - pager.getPage();
并确保page limit is 10 not 11
。并让您的寻呼机不知道您正在添加的额外空行。
【讨论】:
如何不知道寻呼机的额外空行?通过将页面大小设置为 10?如果我将页数限制设置为 10,那么只有 10 条记录会显示 1 条虚拟记录 + 9 条实际记录。 填充实际记录列表后如何在页首添加空记录?使用 AsyncDataProvider 更新 calltable 的页面【参考方案2】:你试过这样吗??
@Override
protected void onRangeChanged(HasData<YourObject> display)
int start = display.getVisibleRange().getStart();
int end = start + display.getVisibleRange().getLength();
if (ListOfYourObjects != null)
end = end >= ListOfYourObjects.size() ? ListOfYourObjects.size(): end;
List<YourObject> sub = ListOfYourObjects.subList(start, end);
updateRowData(start, sub);
【讨论】:
ListOfYourObjects 是从服务器检索到的总记录?我只是在获取所需的数据。你能解释一下为什么需要 ListOfYourObjects 吗? ListOfYourObjects 是您在特定组合更改时填充到网格中的列表。 我已经试过你的解决方案了。当页面大小=10 Records-1000 最后一个按钮页面的 Onclick 应该导航到第 100 页。最后一个按钮的 onclick 获取不正确的 pageIndex -> pager.getPage() & start = display.getVisibleRange().getStart() 的值不正确; 你能告诉我那些不正确的值是什么吗?以便有人可以猜出发生了什么问题.. 您在每一页的末尾添加了一个虚拟记录。所以它变成了总共 1100 条记录。检查 990/11=90以上是关于GWT SimplePager - 获取不正确的寻呼机索引 onclick 的 LastButton的主要内容,如果未能解决你的问题,请参考以下文章
在 Selenium 中测试 GWT SimplePager ImageButton 启用状态
GWT SimplePager:如何在寻呼机中提供 GoTo 功能?