asp.net - 当前页面索引值无效。它必须 >= 0 且 < PageCount

标签 asp.net datagridview

我想绑定(bind)我的数据 Gridview 但它抛出一个错误。 当我点击新页面时允许分页,例如 1.2.3 然后上面的错误抛出 这是我的代码。 一个是页面索引更改,另一个是我的 BindGrid 方法。 当我点击一个新页面 2 或 3 等时出现错误

更新了代码

 protected void DataGrid1_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
    {

        DataGrid1.CurrentPageIndex = e.NewPageIndex;
        DataGrid1.DataSource = Session["data"] as DataTable;
        DataGrid1.DataBind();
    }
    private void BindGrid()
    {
        DataTable data = storedProcedureManager.sp_inactiveFiles(
                providerID,
                 days, CaseTypeID, CollectorID, user.UserRegID);
        lblMsg.Text = data.Rows.Count + " Record's Found.";
        log.Info(lblMsg.Text);
        Session["data"] = data;
        DataGrid1.DataSource = data;
        DataGrid1.DataBind();

        log.Info("Report Displayed.");

    }

最佳答案

发生的问题是,当您在 BindGrid() 方法中再次获取数据时,您获得的页面数量一定会减少。因此您可以做两件事。

1)如果您要过滤数据,请将页面索引重置为 1。

protected void DataGrid1_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
    {

        BindGrid();
    }
private void BindGrid()
    {
        DataTable data = storedProcedureManager.sp_inactiveFiles(
                providerID,
                 days,CaseTypeID,CollectorID,user.UserRegID);
        lblMsg.Text = data.Rows.Count + " Record's Found.";
        log.Info(lblMsg.Text);

        DataGrid1.DataSource = data;
        DataGrid1.CurrentPageIndex = 0;
        DataGrid1.DataBind();

        log.Info("Report Displayed.");

    }

2)如果您不过滤数据,则将数据网格值存储在 session 对象中并使用它进行分页。

 protected void Page_Load(object sender, EventArgs e)
    {
    if(!IsPostBack)
    {
    BindGrid();
    }

  }
protected void DataGrid1_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)
    {
        DataGrid1.CurrentPageIndex = e.NewPageIndex;
        DataGrid1.DataSource = Session["value"] as DataTable;
        DataGrid1.DataBind();
    }
private void BindGrid()
    {
        DataTable data = storedProcedureManager.sp_inactiveFiles(
                providerID,
                 days,CaseTypeID,CollectorID,user.UserRegID);
        lblMsg.Text = data.Rows.Count + " Record's Found.";
        log.Info(lblMsg.Text);
        Session["value"]=data;
        DataGrid1.DataSource = data;
        DataGrid1.DataBind();

        log.Info("Report Displayed.");

    }

关于asp.net - 当前页面索引值无效。它必须 >= 0 且 < PageCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32140171/

相关文章:

c# - c#中多线程的Datagridview

c# - 在 ASP.NET 中将文件从 Web 服务传递到客户端

c# - 如何减少 ASP.NET MVC 150MB+ DLL 的启动时间

asp.net - 什么时候应该在 ASP.NET 控件中使用 # 和 =?

c# - Linq 返回意外结果

C# DataGridView 关注最后一条记录

vb.net - 更新 DataGridView 但输入 TabPage 时不选择任何行

vb.net - 如何从datagridview的选定行中获取数据

.net - vb.net 重新绑定(bind)数据网格以显示 vb.net 中的更改

asp.net - 将 ASP.NET 网站 + 数据库发布到 Windows Azure 网站