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 功能?

GWT SimplePager 中基于百分比的快进按钮

GWT SimplePager:如何在第一个,最后一个,下一个,上一个等寻呼机按钮上提供工具提示?

在Selenium中测试GET简单寻呼机图像按钮启用状态

GWT DataGrid/CellTable:选择多个页面