• (转)无效的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();
    
  • 相关阅读:
    水晶报表关于System.Web.Extensions报错的问题
    个人下一步学习计划
    一个老程序员对数据库的一点纠结
    Visual SourceSafe权限配置记录
    SQL SERVER 2008代码折叠小技巧
    用命令行自动备份数据库到其他服务器
    CrystalReports 2008序列号留档
    ····
    C语言中的static
    页面自动刷新的几种方法
  • 原文地址:https://www.cnblogs.com/wangyt223/p/3447989.html
Copyright © 2020-2023  润新知