您当前的位置: 首页 > 

DataGrid在分页状态下删除纪录的问题

发布时间:2004-10-24 23:54:00 ,浏览量:0

在使用DataGrid分页的时候,正常情况下,绑定数据库列表纪录时会自动产生分页的效果,然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 PageCount。"的异常,其实解决这个问题很简单,我们要做的就是在DataGrid1_DeleteCommand事件中判断CurrentPageIndex的值,并根据不同的结果来绑定DataGrid。

 //检索数据库的函数   public DataSet GetZcbd()   {    try    {     DataSet ds=new DataSet();        string searchString="select id,yy,bj from zc";     da=new OleDbDataAdapter(searchString,conn);     da.Fill(ds,"yy");         return ds;    }    catch    {     return null;        }                 }

 //绑定DataGrid    private void BindGrid()   {    DataSet ds = new DataSet();    ds = us.GetZcbd();    if (ds!=null)    {     this.DataGrid1.DataSource = ds;     this.DataGrid1.DataBind();    }    else    {     msg.Alert("加载数据错误!",Page);    }   } //删除数据库纪录函数   public string DeleteZcbd(int bdID)   {

   int count = this.IfExiseZysx(bdID);//不必理会次句,默认count=1    if (count <= 0) return "false";    else    {     string sqlStr = "delete from zcwhere id="+bdID;     OleDbCommand cmd = new OleDbCommand(sqlStr,conn);

    conn.Open();

    try     {      cmd.ExecuteNonQuery();      return "true";     }     catch(Exception e)     {      return e.Message.ToString();     }     finally     {      conn.Close();     }          }   }

// DataGrid1_DeleteCommand事件修改函数   private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)   {    int bdID = int.Parse(DataGrid1.DataKeys[(int)e.Item.ItemIndex].ToString());    string isDel = us.DeleteZcbd(bdID);    int CurrentPage = 0;    if (isDel == "true")    {     if(this.DataGrid1.CurrentPageIndex == this.DataGrid1.PageCount -1)     {    if (this.DataGrid1.CurrentPageIndex == 0)     {      this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount -1;     }     else     {      if (this.DataGrid1.Items.Count % this.DataGrid1.PageSize == 1)      {       CurrentPage = 2;      }      else      {       CurrentPage = 1;      }      this.DataGrid1.CurrentPageIndex = this.DataGrid1.PageCount - CurrentPage;     }    }     this.BindGrid();    }    else    {        msg.Alert("删除数据错误!",Page);    }     }     注释:msg为一个类似WinForm的messagebox对话框,不必理会。可以使用label.Text代替

代码很乱,敬请谅解!

感谢我的好友小琳在此提供了技术支持,他是一位出色的软件工程师。

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108697博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0479s