当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  DataGrid常见解决方案:在分页状态下删除纪录的问题

 DataGrid常见解决方案:在分页状态下删除纪录的问题

点击次数:21 次 发布日期:2008-11-26 12:19:44 作者:源代码网
源代码网推荐      在使用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代替
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华