`

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

阅读更多
在使用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代替

代码很乱,敬请谅解!

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

分享到:
评论

相关推荐

    EasyUI中datagrid 分页,僧删改查,上下移动数据.net案例

    本文将深入探讨标题中的"EasyUI中datagrid分页,增删改查,上下移动数据"的.NET案例。 **EasyUI的datagrid组件**: EasyUI的datagrid是一个表格控件,它具有数据展示、排序、过滤、分页等功能,非常适合用于数据...

    flex 三状态多选 自动分页DataGrid

    - 动态列添加和删除:根据业务逻辑,可能需要在运行时动态增减DataGrid的列。 4. **优化与性能**: - 使用虚拟化技术:在大数据量时,只渲染可视区域内的行,减少内存消耗。 - 异步加载:避免一次性加载所有数据...

    ASPNET程序中DataGrid控件的内置分页机理及效率提高的研究.pdf

    ##### 2.1 优化DataGrid分页机制 为了提高DataGrid的分页性能,可以采取以下措施: - **改进数据加载逻辑**:改为按需加载数据,即仅在需要显示当前页的数据时才从数据库查询。这可以通过自定义数据源和分页逻辑...

    bootstrap的datagrid组件

    分页状态通常会自动保存,使得用户在刷新页面后仍能保持之前的浏览位置。 3. **条件查询**: 条件查询功能允许用户根据指定的条件过滤数据。开发者可以在DataGrid中添加输入框或其他表单元素,用户输入条件后,...

    DataGrid控件用法详解

    在使用DataGrid控件时,可能会遇到数据同步问题、内存泄漏、空指针异常等问题,需要通过调试工具和日志记录来定位和解决。了解控件的内部工作原理,对可能出现的问题有预见性,是提高代码质量的关键。 总结,...

    VS2003 datagrid全攻略

    - **插入**:通过在DataGrid中添加一个模板列,包含输入控件,用户可以直接在DataGrid内新增记录。 - **编辑**:设置`AllowEditing="true"`,DataGrid会在每一行显示编辑按钮,点击后切换为可编辑状态。 - **删除...

    DataGrid用法

    2. 编辑模板:使用`EditItemTemplate`定义每行在编辑状态下的显示,如添加文本框、下拉框等输入控件。 3. 更新操作:触发`UpdateCommand`事件,获取当前行数据,进行更新操作。需处理数据验证和异常。 三、...

    EasyUI-CRUD-DataGrid

    服务器执行删除操作后,DataGrid 自动刷新,反映数据的最新状态。 在实现这些功能时,开发者需要熟悉 AJAX 技术,以及服务器端的数据处理逻辑,例如使用 PHP、Java、ASP.NET 或其他后端语言来处理请求。同时,还...

    easyui使用datagrid定制生成一个table

    **2.3 删除记录** - **删除行**:通过选择行然后触发删除按钮或命令来删除。 - 示例代码: ```csharp private void btnDelete_Click(object sender, RoutedEventArgs e) { var selectedRows = dataGrid1....

    通用的DataGrid操作

    本篇文章将详细探讨`DataGrid`的基本概念、功能以及如何实现分页、排序、添加、删除和修改等核心操作。 一、DataGrid概述 `DataGrid`是许多编程语言和框架中的一种控件,主要用于显示结构化的数据集合,如数据库中...

    DataGrid增删改查(EasyUI)示例源码

    在IT行业中,DataGrid是一种常见的数据展示控件,尤其在Web开发中,它被广泛用于显示和操作大量的结构化数据。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,其中包括DataGrid,使得开发者能够轻松实现数据的增...

    Flex Datagrid全选功能

    2. **全选功能需求**: 在许多应用中,用户可能需要一次性选择Datagrid中的所有记录,例如进行批量操作,如删除、编辑等。因此,为Datagrid添加全选功能可以提高用户体验。 3. **实现方法**: - **CheckBox**: 可以...

    浅谈MVC+EF easyui dataGrid 动态加载分页表格

    9. 编辑和删除操作:`editRole`和`delRole`方法是示例中用于编辑和删除记录的函数,它们接收行索引作为参数,通常会弹出确认对话框或调用后台接口执行实际操作。这些功能需要根据实际应用需求进行实现。 通过以上...

    Json 格式分页、Jquery easy ui 增删改查例子

    4. **删除功能**:同样,通过工具栏按钮触发删除操作,选定行后调用`deleteRow`删除记录。 5. **分页**:EasyUI的`datagrid`默认支持分页,只需设置`pagination`为`true`,并定义每页显示的条目数。 6. **保存和...

    silverlight4 DataGrid控件 增删改 全选

    在DataGrid中添加新记录通常通过添加新的数据项到数据源来实现。例如,你可以创建一个新的对象实例,然后将其添加到ObservableCollection中,DataGrid会自动反映出这个变化,显示新的行。同时,你还可以为DataGrid...

    第32章 DataGrid(数据表格)组件[7]1

    - 删除记录:通过$.ajax发送POST请求到后台的'delete.php',传递选中行的ID集合。在发送请求前显示加载状态,成功后加载新数据,隐藏加载状态,并显示提示消息。 - PHP删除代码:在服务器端,根据接收到的ID数组...

    WINFORM使用DataGrid+TextBox创建图书管理程序

    在这个场景下,我们探讨的是如何利用WinForm中的DataGrid控件和TextBox控件来创建一个图书管理程序。这个程序通常会包括图书信息的展示、添加、编辑和删除等功能。 1. **DataGrid控件**:DataGrid是Windows Forms中...

    EasyUi实现的数据列表

    - **下页保留复选框**:在分页时,通常希望用户的选中状态在翻页后仍然保持。EasyUI datagrid可以通过设置来保存用户的选择状态,即使翻到下一页,之前的选中项也会被记住。 - **导出Excell**:EasyUI通常会与后台...

    DataGrid控件购物车

    首先,`DataGrid`控件允许我们在网页上动态显示数据,它可以从数据库或其他数据源获取数据,并提供多种内置功能,如排序、分页、编辑、添加和删除。在购物车场景中,我们通常需要展示商品名称、价格、数量和总价等...

    DataTable,DataView和DataGrid中一些容易混淆的概念

    它可以用来存储、操作和管理数据,包括添加、删除、修改记录。DataTable还支持自定义列、索引和约束,提供了丰富的数据操作方法和事件。 接着,`DataView`是一个基于DataTable的动态视图,它提供了对数据的不同视图...

Global site tag (gtag.js) - Google Analytics