Datagrid分页:无效的CurrentPageIndex值。它必须> = 0

时间:2009-03-20 04:01:19

标签: datagrid paging

我有一个启用了分页的数据网格。我正在基于过滤条件在datagrid中显示结果。我已经过滤了数据,现在有2页。当我去第2页。而我正在再次进行seacrhing功能以缩小结果范围。然后我收到一个错误,如“无效的CurrentPageIndex值。它必须是> = 0和< PageCount + datagrid分页”我确信第二次搜索只产生比前一次更少的页数。如何解决这个问题?提前致谢

5 个答案:

答案 0 :(得分:5)

进行某些更改时,需要重置为第1页。这包括过滤更改。几乎,每次更改网格可用的行数时,请返回第1页。

答案 1 :(得分:1)

我有一个启用了分页的数据网格。我正在基于过滤条件在datagrid中显示结果。我已经过滤了数据,现在有2页。当我进入第2页时,我再次进行搜索功能以缩小搜索范围。然后我收到类似

的错误
  

“无效的CurrentPageIndex值。必须是> = 0且< the   PageCount + datagrid paging“

我确信第二次搜索只能产生比前一次更少的页面。如何解决这个问题呢 ? 错误显示:

  

CurrentPageIndex值。它必须是> = 0且< PageCount。

我解决了问题

protected void btnSearchLibrary_Click(object sender, EventArgs e)
{
    if(!String.IsNullOrEmpty(txtSearchLibraryNo.Text.Trim()))
    oBookReceiptDTO.LibraryCardNo = txtSearchLibraryNo.Text.Trim();
    gvBooksReceiptList.CurrentPageIndex = 0;
    FillGridViewBookReceiptList(oBookReceiptDTO);
}

注意:gvBooksReceiptList.CurrentPageIndex = 0;这是我用来解决问题的路线。

答案 2 :(得分:0)

另一个建议是仅在PageCount发生更改时重置CurrentPageIndex并导致HttpException。代码片段基于Les Smith的example

    Try
        dataGrid1.DataBind()
    Catch
        ' We possibly don't have the correct PageCount.
        dataGrid1.CurrentPageIndex = 0
        dataGrid1.DataBind()
    End Try

答案 3 :(得分:0)

您可以转到第一页或捕获异常并转到您喜欢的任何页面。如果要从最后一页删除一条记录,则可能需要移至上一页。

 try
    {
       grid.DataSource = dao.PopulateGrid();
       grid.DataBind();
    }
     catch
    {
     if (grid.CurrentPageIndex >= grid.PageCount)
      {
        grid.CurrentPageIndex -= 1;
        grid.DataSource = dao.PopulateGrid();
        grid.DataBind();
      }
    }

答案 4 :(得分:0)

对于我的情况,我所做的是每次在数据网格控件上加载数据发生更改时,始终应用重置当前页面索引的行。

  

DataGrid.CurrentPageIndex = 0

     

DataGrid.DataSource = Datatable / Dataset

     

DataGrid.DataBind()

这是因为将数据源绑定到数据网格时抛出的异常并非始终是页面计数不一致。