【问题标题】:GWT Simple Pager HelpGWT 简单寻呼机帮助
【发布时间】:2011-06-04 00:28:22
【问题描述】:

我被我想附加到单元格表的 gwt 单元格寻呼机困住了。我是这样设置的:

List <ForumMessage> AllMessages=populated from an rpc;
CellTable cellTable = new CellTable  <ForumMessage>();
simplePager = new SimplePager();
cellTable.addColumn(ColumnM);
cellTable.setRowData(0,AllMessages);
simplePager.setDisplay(cellTable);
simplePager.setPageSize(3);

ColumnM 已正确定义

但是当显示单元格表时,前三行正确显示,但是当我按下下一步时,没有显示任何行,并且单元格表就像加载一样。现在从那个页面开始,如果我按回,页面又好像正在加载一样。

现在,另一个问题是我可以连续按next,即使只有8行,页数也会不断增加

【问题讨论】:

    标签: java gwt widget cell


    【解决方案1】:

    当我第一次尝试使用单元格表进行分页时,我遇到了同样的问题。它以这样一种方式实现,即使在您调用 setRowSize 之后,寻呼机也不会对您的数据集做出任何假设。这是这样构建的,因此您可以执行延迟加载。

    一旦您知道有多少行数据可用,您需要致电cellTable.setRowCount(int),这将解决寻呼机持续运行的问题。现在,要实现分页,您还需要将 RangeChangeHandler 添加到单元格表以设置数据。下面是一些示例代码:

    @Override
    public void onRangeChange(RangeChangeEvent event)
    {
        Range range = cellTable.getVisibleRange();
        int start = range.getStart();
        int length = range.getLength();
        List<ForumMessage> toSet = new ArrayList<ForumMessage>(length);
        for (int i = start; i < start + length && i < AllMessages.size(); i++)
            toSet.add((ForumMessage) AllMessages.get(i));
        cellTable.setRowData(start, toSet);
    }
    

    【讨论】:

    • 我发现,当您不设置 cellTable.setRowCount(int) 时,它会自动工作。如果有人有兴趣,我可以用代码 sn-p 确认。
    • 上例中的“结果”是什么?
    • 结果应该是 AllMessages... 将在上面修复。
    • @LINEMAN78 如果我想在 onRangeChange 方法中加载分页对象列表怎么办。我的意思是如果不立即从 RPC 中提取所有记录,我仍然可以对分页进行编码。我事先知道记录的数量。
    • 您应该能够在实例化中设置大小,并在 onRangeChanged 方法中进行 RPC 调用,并在最终取回数据时调用 setRowData。
    【解决方案2】:

    使用ListDataProvider&lt;T&gt; 可能比只提供列表更容易。所以,你的例子是:

    // get the list
    List <ForumMessage> AllMessages=populated from an rpc;
    
    // create table
    CellTable cellTable = new CellTable  <ForumMessage>();
    cellTable.addColumn(ColumnM);
    
    // create pager
    simplePager = new SimplePager();
    simplePager.setDisplay(cellTable);
    simplePager.setPageSize(3);
    
    // create data provider
    ListDataProvider<ForumMessage> dataProvider = new ListDataProvider<ForumMessage>();
    dataProvider.addDataDisplay(cellTable);
    dataProvider.setList(AllMessages);
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我只需要像这样设置 cellTable 的页面大小并删除寻呼机的页面大小:

      List <ForumMessage> AllMessages=populated from an rpc;
      CellTable cellTable = new CellTable  <ForumMessage>();
      simplePager = new SimplePager();
      cellTable.addColumn(ColumnM);
      cellTable.setRowData(0,AllMessages);
      simplePager.setDisplay(cellTable);
      // set the PageSize of the cellTable
      cellTable.setPageSize(3);
      

      【讨论】:

        【解决方案4】:

        这是我使用 GWT 2.5 进行的测试 - 我使用 AsyncDataProvider:

        SimplePager sp = new SimplePager(TextLocation.LEFT, true,
                    2 * ct.getPageSize(), true);
        
        AsyncDataProvider<Menu> adp = new AsyncDataProvider<Menu>() {
                @Override
                protected void onRangeChanged(HasData<Menu> display) {
                    final Range range = display.getVisibleRange();
                    ColumnSortInfo csi = ct.getColumnSortList().get(0);
        
                    String dataStoreName = csi.getColumn().getDataStoreName();
                    boolean isAscending = csi.isAscending();
        
                    AAFcms.getAAFService().getAdminMenu(
                            new AdminMenuReq(range, dataStoreName, isAscending),
                            new AsyncCallback<AdminMenuResp>() {
                                @Override
                                public void onFailure(Throwable caught) {
                                    System.out.println(caught.getStackTrace());
                                    // TODO Auto-generated method stub
                                }
        
                                @Override
                                public void onSuccess(AdminMenuResp result) {
                                    ct.setRowData(range.getStart(),
                                            result.getMenus());
                                    ct.setRowCount(result.getRows(), true);
                                }
                            });
                }
            };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          相关资源
          最近更新 更多