代码之家  ›  专栏  ›  技术社区  ›  Rex Miller

使用DataPager而不检索每个请求上的所有行

  •  4
  • Rex Miller  · 技术社区  · 17 年前

    我有一个ListView,我正在将数据绑定到一组类似以下的对象:

    int total;
    List<Client> clientList = 
        clientData.GetClients(criteria, pageNum, pageSize, out total);
    uxClientList.DataSource = clientList;
    uxClientList.DataBind();
    

    其中pagenum、pagesize和total参数有助于在数据访问层进行分页。到现在为止,一直都还不错。

    现在我可以在页面上抛出一个数据寻呼机,将它指向listview并获得一个合适的分页UX。 There's a little more to it when you're binding programmatically instead of declaratively with a data source control 但这里的问题是,datapager期望每次都检索整个结果集,并从中计算分页,因此它将返回的单个结果页视为总可用记录,并将其呈现为只有一页可用结果。换句话说,如果我们切换到getclients的非分页版本,那么上面的场景在datapager中可以正常工作:

    List<Client> clientList = clientData.GetClients(criteria);
    uxClientList.DataSource = clientList;
    uxClientList.DataBind();
    

    显然,由于我们的数据访问层非常友好,能够为我们提供一种一次检索页面的方法,因此这比每次检索所有记录更可取。如果我们能明确地将全部可用记录通知给DataPager,这样它仍然可以自动创建分页输出,但一次只需要一页就可以了。

    我找不到一个简单的方法来做这个,我也没有在搜索中找到任何东西。诚然,我目前对DataPager的实现没有深入的了解,所以希望我忽略了一些东西。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Seth Reno    17 年前

    你没有忽视任何东西。

    处理大型结果集时,需要关闭分页并添加自己的分页控件。

    以我的经验,这就足够了。不管怎样,没有人会超过第三页。

        2
  •  4
  •   flesh    17 年前

    查看ListViewPagedDataSource及其 AllowServerPaging 财产,我想 可以 做你想要的……

    推荐文章