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

原创 2004年05月31日 11:38:00

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

hbzxf (阿好)
http://www.cnblogs.com/hbzxf

        在使用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代替

代码很乱,敬请谅解!

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

2004.4.1

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

   在使用DataGrid分页的时候,正常情况下,绑定数据库列表纪录时会自动产生分页的效果,然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值。它必须大于等于 0 且小...
  • xfworld
  • xfworld
  • 2006年09月05日 15:32
  • 497

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

  • zgqtxwd
  • zgqtxwd
  • 2008年04月24日 18:01
  • 175

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

在使用DataGrid分页的时候,正常情况下,绑定数据库列表纪录时会自动产生分页的效果,然而我发觉在删除纪录的时候总会发生"无效的 CurrentPageIndex 值。它必须大于等于 0 且小于 P...
  • 21aspnet
  • 21aspnet
  • 2004年10月24日 23:54
  • 1388

jQuery easyUi 数据表格DataGrid 分页查询及常见问题解析

jQuery easyUi 数据表格DataGrid 分页查询及常见问题解析
  • Miss_Pirate
  • Miss_Pirate
  • 2015年12月25日 16:19
  • 5732

C#中DataGrid分页,修改,更新,删除功能的实现

 第一次写博客,不知道写写什么好,就写写自己最近做的东西把。a,实现分页的存储过程:首先新件一表: UserInfo,在这里我把DataGrid 的 PerPage=10CREATE PROCEDUR...
  • nanqing
  • nanqing
  • 2007年05月10日 17:45
  • 4476

springMVC+easyui中的datagrid分页

前言:在以前用servlet+JSP做小型管理系统时,数据表格分页的代码编写往往都要花费一些时间,这次学习了Spring+springMVC+Mybatis,熟悉了一下前端框架easyUI的用法之后,...
  • qq_21231581
  • qq_21231581
  • 2016年08月09日 12:57
  • 844

easyui 加载datagrid的时候添加自定义分页参数

$riskApprovalItemTable = $("#riskApprovalItemTable");//风险审批项datagrid $editRiskApprovalItemWindow...
  • hhybtcz
  • hhybtcz
  • 2014年05月09日 10:31
  • 2264

关于easyui中datagrid分页问题【不喜勿喷】【今天才弄懂】

首先datagrid中的pagination属性设置为true: 如 $('#dg1').datagrid({ url:"{:U('Rearlogin/ajaxNoticeAll')}"...
  • XiaolongLi171
  • XiaolongLi171
  • 2016年12月20日 12:43
  • 3388

easyUI自定义DataGrid分页栏

@author 雨泽 datagrid内置一个很好特性的分页功能,自定义也相当简单,在这个教程中,我们将创建一个datagrid 和添加一些自定义按钮在分页工具栏. 查看...
  • me4405801
  • me4405801
  • 2016年01月07日 10:38
  • 366

关于DataGrid自动分页的不能显示的问题

关于DataGrid自动分页的问题在属性生成器中设置DataGrid自动分页后并没有完全结束,这是因为它会在页面中只显示第一页。当点击下一页时页面刷新后竟然还显示第一页。这不是IsPostBack的问...
  • long1024
  • long1024
  • 2006年05月25日 13:47
  • 3328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataGrid在分页状态下删除纪录的问题
举报原因:
原因补充:

(最多只允许输入30个字)