(转)无效的CurrentPageIndex 值。它必须大于等于0 且小于PageCount 解决方案

第一种:

当以某种条件来查询的时候 其中的结果是以一个结果为条件的datagrid分页 采用字查询到条件下加入如下代码:

                     

         
[c-sharp] view plaincopyprint?

    protected void btn_Search_Click(object sender, EventArgs e)  
       {  
           if (this.TextBox1.Text == "")  
           {  
               app_java.Create();  
               app_java.MsgBox("提示:请输入您要查询的标题的关键字!");  
               app_java.Dispose();  
               TextBox1.Focus();  
           }  
           if (DGRUserList.CurrentPageIndex > 0)  
           {  
               DGRUserList.CurrentPageIndex = 0;  
           }  
           string sql = "select * from tb_carproduct where cp_title like '%" + this.TextBox1.Text.Trim().ToString() + "%' and  cp_type='" + Request.QueryString.Get("id").ToString() + "'";  
           db.BindDataGridDs(sql, DGRUserList);  
       }  

        

第二种:

是在删除datagrid最后一条记录的时候出现在这种异常加入一下代码:

       当删除数据库中数据并在数据绑定之前,判断是否需要翻页,以纠正CurrentPageIndex的错误。
实现:
        在DataGrid_Delete方法中,添加如下代码:      
        //正常删除数据库中的数据            
        //判断
        if( DataGrid1.Items.Count == 1 && DataGrid1.CurrentPageIndex > 0 )
        {
                DataGrid1.CurrentPageIndex--;
        }       
        //重新绑定数据
        BindGrid();

第三种:

    是在可能我们没有使用DataGrid内建的删除方式,可能通过CheckBox使得每次可以删除多条记录
思路:
        其实思路差不多,只不过要获取一次一共删除多少记录,并保存于一个变量中,然后将DataGrid1.Items.Count和其比较,正如上面的“DataGrid1.Items.Count == 1”,这样就能判断是否需要翻页了。
实现:
        //获取删除记录的总数
        int count = 0;
        foreach( DataGridItem item in DataGrid1.Items )
        {
                if( item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem )
                {
                        CheckBox ckbox = item.FindControl(“CheckBox1“ ) as CheckBox;//?????????????
                        if( ckbox != null && ckbox.Checked )
                                ++ count;
                }
        }
        //判断
        if( count == DataGrid1.Items.Count && DataGrid1.CurrentPageIndex > 0 )
        {
                -- DataGrid1.CurrentPageIndex;
        }
        //重新绑定数据
        BindGrid();
原文地址:https://www.cnblogs.com/wangyt223/p/3447989.html