在使用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组件**: EasyUI的datagrid是一个表格控件,它具有数据展示、排序、过滤、分页等功能,非常适合用于数据...
- 动态列添加和删除:根据业务逻辑,可能需要在运行时动态增减DataGrid的列。 4. **优化与性能**: - 使用虚拟化技术:在大数据量时,只渲染可视区域内的行,减少内存消耗。 - 异步加载:避免一次性加载所有数据...
分页状态通常会自动保存,使得用户在刷新页面后仍能保持之前的浏览位置。 3. **条件查询**: 条件查询功能允许用户根据指定的条件过滤数据。开发者可以在DataGrid中添加输入框或其他表单元素,用户输入条件后,...
在使用DataGrid控件时,可能会遇到数据同步问题、内存泄漏、空指针异常等问题,需要通过调试工具和日志记录来定位和解决。了解控件的内部工作原理,对可能出现的问题有预见性,是提高代码质量的关键。 总结,...
- **插入**:通过在DataGrid中添加一个模板列,包含输入控件,用户可以直接在DataGrid内新增记录。 - **编辑**:设置`AllowEditing="true"`,DataGrid会在每一行显示编辑按钮,点击后切换为可编辑状态。 - **删除...
2. 编辑模板:使用`EditItemTemplate`定义每行在编辑状态下的显示,如添加文本框、下拉框等输入控件。 3. 更新操作:触发`UpdateCommand`事件,获取当前行数据,进行更新操作。需处理数据验证和异常。 三、...
服务器执行删除操作后,DataGrid 自动刷新,反映数据的最新状态。 在实现这些功能时,开发者需要熟悉 AJAX 技术,以及服务器端的数据处理逻辑,例如使用 PHP、Java、ASP.NET 或其他后端语言来处理请求。同时,还...
**2.3 删除记录** - **删除行**:通过选择行然后触发删除按钮或命令来删除。 - 示例代码: ```csharp private void btnDelete_Click(object sender, RoutedEventArgs e) { var selectedRows = dataGrid1....
本篇文章将详细探讨`DataGrid`的基本概念、功能以及如何实现分页、排序、添加、删除和修改等核心操作。 一、DataGrid概述 `DataGrid`是许多编程语言和框架中的一种控件,主要用于显示结构化的数据集合,如数据库中...
在IT行业中,DataGrid是一种常见的数据展示控件,尤其在Web开发中,它被广泛用于显示和操作大量的结构化数据。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,其中包括DataGrid,使得开发者能够轻松实现数据的增...
2. **全选功能需求**: 在许多应用中,用户可能需要一次性选择Datagrid中的所有记录,例如进行批量操作,如删除、编辑等。因此,为Datagrid添加全选功能可以提高用户体验。 3. **实现方法**: - **CheckBox**: 可以...
9. 编辑和删除操作:`editRole`和`delRole`方法是示例中用于编辑和删除记录的函数,它们接收行索引作为参数,通常会弹出确认对话框或调用后台接口执行实际操作。这些功能需要根据实际应用需求进行实现。 通过以上...
4. **删除功能**:同样,通过工具栏按钮触发删除操作,选定行后调用`deleteRow`删除记录。 5. **分页**:EasyUI的`datagrid`默认支持分页,只需设置`pagination`为`true`,并定义每页显示的条目数。 6. **保存和...
在DataGrid中添加新记录通常通过添加新的数据项到数据源来实现。例如,你可以创建一个新的对象实例,然后将其添加到ObservableCollection中,DataGrid会自动反映出这个变化,显示新的行。同时,你还可以为DataGrid...
- 删除记录:通过$.ajax发送POST请求到后台的'delete.php',传递选中行的ID集合。在发送请求前显示加载状态,成功后加载新数据,隐藏加载状态,并显示提示消息。 - PHP删除代码:在服务器端,根据接收到的ID数组...
在这个场景下,我们探讨的是如何利用WinForm中的DataGrid控件和TextBox控件来创建一个图书管理程序。这个程序通常会包括图书信息的展示、添加、编辑和删除等功能。 1. **DataGrid控件**:DataGrid是Windows Forms中...
- **下页保留复选框**:在分页时,通常希望用户的选中状态在翻页后仍然保持。EasyUI datagrid可以通过设置来保存用户的选择状态,即使翻到下一页,之前的选中项也会被记住。 - **导出Excell**:EasyUI通常会与后台...
首先,`DataGrid`控件允许我们在网页上动态显示数据,它可以从数据库或其他数据源获取数据,并提供多种内置功能,如排序、分页、编辑、添加和删除。在购物车场景中,我们通常需要展示商品名称、价格、数量和总价等...
它可以用来存储、操作和管理数据,包括添加、删除、修改记录。DataTable还支持自定义列、索引和约束,提供了丰富的数据操作方法和事件。 接着,`DataView`是一个基于DataTable的动态视图,它提供了对数据的不同视图...