无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount之解决

  最近在做客户关系管理系统字典这块,就是系统的基本数据录入模块,其实发现虽然是小模块,但是,里面的细节问题还是蛮多的,调试的时候,出了一个问题,解决了有出现另外一个问题,可能这是一个还没什么经验的程序员经常要面对的,有错就改,没什么了不起,耐心点就是了, 其中出的最多问题就是:无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount 。这个问题频繁的出现在 DataGrid 分页后删除,我这里做删除,用类似邮箱中的前面一个 CheckBox ,可以全选那样做的,普通的删除是可以做到的,但是一旦,删除最后一页的时候,由于当前索引页就会出错,参考了好久,找了好多资料这个问题终于解决了,是这样的,如果是删除最后一页,那么它当前的索引页就应该减 1 (如果当前总页数大于 1 ),否则当前页索引为 0 。给大家看代码:

 

        //删除

 

        private void btnDel_Click(object sender ,System.Web.UI.ImageClickEventArgs e)

 

        {

 

          

 

            System.Collections.ArrayList list = new ArrayList();

 

            string ContactTypeID="";

 

            int Count=0;

 

            foreach(DataGridItem item in this.dgContactType.Items)

 

            {

 

       

 

                if(((CheckBox)(item.Cells[0].FindControl("ChkSelect"))).Checked == true)

 

                {

 

                    ContactTypeID= this.dgContactType.DataKeys[item.ItemIndex].ToString();

 

                    list.Add(ContactTypeID);

 

                }

 

               

 

       

 

            }

 

            if(list.Count !=0)

 

            {

 

                SqlConnection con=SQLConnection.myConnection;

 

                for(int k=0;k

                {

 

                    string strSql = "delete from CONTACTTYPE where CONTACTTYPEID= '"+list[k].ToString()+"'";

 

                   

 

               

 

                    SqlCommand cmd=new SqlCommand(strSql,con);

 

                   

 

                    Count  = cmd.ExecuteNonQuery();

 

                   

 

                }

 

                   

 

                if( Count == 0)

 

                {

 

                    this.LblMessage.Text = " <script language="javascript" type="text/javascript"></script> ";

 

                   

 

                }

 

                else

 

                {

 

                    this.LblMessage.Text = " <script language="javascript" type="text/javascript"></script> ";

 

                }

 

                con.Close();

 

                //删除最后一页,需要修改当前页索引

 

                if((this.dgContactType.PageCount - this.dgContactType.CurrentPageIndex == 1)  &&( this.dgContactType.Items.Count - list.Count == 0))

 

                {

 

                    if(this.dgContactType.PageCount >1)

 

                    {

 

                        this.dgContactType.CurrentPageIndex =this.dgContactType.CurrentPageIndex -1;

 

                    }

 

                    else

 

                    {

 

                        this.dgContactType.CurrentPageIndex = 0;

 

                    }

 

                }

 

 

                this.DataBindToDG();//DataGrid重新绑定到数据库

 

               

 

            }

 

           

 

           

 

 

           

 

        }

 

      另外再提个小问题,就是做了查询后,发现查出了冗余的数据,问题就出在了,换页事件上,因为换页后我重新绑定到DataGrid的数据是从数据库中全选的,这就难免会有冗余,现在DataGrid中的数据应该是符合查询条件的数据,换页事件中,新页也应该是符合查询条件的数据。所以现在就换页代码修改如下:

 

      //当前索引页

 

        private void dgContactType_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)

 

        {

 

            this.dgContactType.CurrentPageIndex=e.NewPageIndex;

 

            //当前绑定到DataGrid中的应该是查询后是数据,否则有冗余数据

 

            string str=this.txtContactTypeFind.Text.ToString();

 

            string strSql="select * from CONTACTTYPE where  CONTACTTYPENAME like '%"+str+"%' order by CONTACTTYPEID";

 

            DataSet ds=new DataSet();

 

            ds=Common.GetDSCommon(strSql);

 

            this.dgContactType.DataSource=ds.Tables[0].DefaultView;

 

            this.dgContactType.DataBind();

 

           

 

           

 

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值