【问题标题】:Paged GridView Only Populates First Page分页的 GridView 仅填充第一页
【发布时间】:2013-07-19 20:08:43
【问题描述】:

我使用以下方法填充了一个 GridView:

List<MyObject> items = new List<MyObject>();
// here I am filling the list using SQL
        PanelGridView.DataSource = items; //fill GridView with objects, this works when NOT using paging
        PanelGridView.DataBind();

有了这个,并禁用了分页,我有一个完全填充的 GridView。但是,当我打开分页时,第一页被填满,但所有后续页面都是空的。我怎样才能确保所有项目都被考虑在内,并在页面之间正确划分(给定我指定的页面大小)?

编辑:我忘记包含此代码:

    protected void PanelGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    PanelGridView.PageIndex = e.NewPageIndex;
    PanelGridView.DataBind();
}

【问题讨论】:

  • 您的面板对象是什么? “项目”已定义,但未定义面板。能否请您添加缺少的代码?
  • 我更改了代码以避免混淆,并忘记将面板更改为项目。修复了代码。

标签: c# asp.net gridview


【解决方案1】:

确保在更改页面后对网格进行数据绑定,并确保将页面索引设置为新的页面索引。这是在 PageChanging 事件处理程序中完成的。

【讨论】:

  • 对此我感到非常抱歉,我应该包含该代码。我已经编辑了原始帖子以表明我正在这样做。确定它应该在 PageIndexChanging 处理程序中,而不是 PageIndexChanged 处理程序中?
  • 在重新绑定之前还得重新设置PanelGridView的数据源。
  • 为什么换页时GridView会丢失数据源?
  • 当表单回传到服务器时,数据会丢失。您可以将数据存储到视图状态中,这样您就不必每次都查询它(但是,如果您有大量数据,这可能不是一个好主意)
  • 重新分配数据源对我来说可能会更好。当我一开始就已经获得数据时,必须这样做似乎很愚蠢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多