GridView中选择checkBox的项删除事件
### GridView中选择checkBox的项删除事件 在ASP.NET Web应用程序中,`GridView`是一个非常强大的控件,用于显示数据源中的数据。它提供了多种交互功能,例如分页、排序等。有时,我们还需要实现对`GridView`中某些特定行进行操作的功能,比如删除选中的记录。本文将详细探讨如何在`GridView`中实现通过选中复选框来触发删除事件的功能。 #### 一、基础概念 在深入讨论代码实现之前,我们需要了解几个基本概念: 1. **GridView**:ASP.NET中用于显示数据的表格控件。 2. **CheckBox**:用于用户选择某一行或多项的复选框控件。 3. **Delete事件**:当用户选择某一行并触发删除操作时发生的事件。 #### 二、代码分析与实现 ##### 1. `btnDel_Click` 方法 ```csharp protected void btnDel_Click(object sender, EventArgs e) { try { bool blSelected = false; int j = this.GridView1.Rows.Count; for (int i = 0; i < j; i++) { CheckBox checkbox = (CheckBox)GridView1.Rows[i].FindControl("chkDo"); if (checkbox.Checked) { blSelected = true; int LoginID = Convert.ToInt32(this.GridView1.DataKeys[i]["LoginID"]); int d = LoginInfoBLL.Delete(LoginID); if (d < 1) { this.Response.Write("<script>alert('删除成功');</script>"); this.Bind(1); } else { this.Response.Write("<script>alert('删除失败');</script>"); this.Bind(1); } } } if (!blSelected) { this.Response.Write("<script language=javascript>alert('请选择要删除的信息!');</script>"); } this.Bind(1); } catch (Exception ex) { this.Response.Write("<script language=javascript>alert('发生错误');</script>"); } } ``` 该方法用于处理按钮点击事件,实现删除功能: - 遍历`GridView`中的所有行,查找名为`chkDo`的`CheckBox`控件。 - 如果某个`CheckBox`被选中,则获取该行的数据键(`DataKey`)中的`LoginID`,调用`LoginInfoBLL.Delete`方法执行删除操作。 - 根据删除操作的结果显示不同的提示消息,并重新绑定`GridView`以更新数据显示。 - 如果没有选中任何复选框,则提示用户必须至少选择一项。 ##### 2. `Button3_Click` 方法 ```csharp protected void Button3_Click(object sender, EventArgs e) { this.chkAll.Checked = false; bool isSelect = false; foreach (GridViewRow gr in this.GridView_IsDestroy.Rows) { CheckBox ck = gr.FindControl("chkSigle") as CheckBox; if (ck.Checked) { isSelect = true; int pid = Convert.ToInt32(this.GridView_IsDestroy.DataKeys[gr.RowIndex].Values["ProductId"].ToString()); Product_Supp = ProductUtility_Sup.GetById(pid, false); ProductUtility_Sup.Delete(p); } } if (!isSelect) { Response.Write(string.Format(JsHelper.WINALERTSCRIPT, "请选择要删除的产品")); } else { Response.Write(string.Format(JsHelper.WINALERTSCRIPT, "删除成功")); Response.Write(string.Format(JsHelper.REDIRECTPAGESCRIPT, "Product_IsDestory.aspx")); } } ``` 此方法同样实现了删除功能,但针对的是另一个`GridView`实例`GridView_IsDestroy`: - 将全选复选框`chkAll`的状态设置为未选中。 - 遍历`GridView_IsDestroy`中的所有行,查找名为`chkSigle`的`CheckBox`控件。 - 如果某个`CheckBox`被选中,则获取该行的数据键(`DataKey`)中的`ProductId`,调用相应的业务逻辑层方法执行删除操作。 - 根据删除操作的结果显示不同的提示消息,并根据需要重定向到其他页面。 #### 三、注意事项 - 在遍历`GridView`的行时,需要注意`Rows.Count`可能发生变化(如在删除过程中),因此建议使用`foreach`循环。 - 处理用户输入时应确保数据类型转换正确无误,避免出现异常。 - 使用`Response.Write`时应注意浏览器兼容性问题,尤其是JavaScript代码的写法。 - 考虑到用户体验,可以添加更多交互效果,如禁用按钮直到操作完成。 #### 四、总结 通过以上介绍,我们可以看到在`GridView`中实现通过复选框选择并触发删除操作是比较常见的需求。理解这些代码背后的逻辑对于开发高效、可靠的Web应用程序至关重要。希望本文能够帮助开发者更好地理解和掌握相关技术。
//删除事件
protected void btnDel_Click(object sender, EventArgs e)
{
try
{
bool blSelected = false;
int j = this.GridView1.Rows.Count;
for (int i = 0; i < j; i++)
{
CheckBox checkbox = (CheckBox)GridView1.Rows[i].FindControl("chkDo");
if(checkbox.Checked)
{
blSelected = true;
int LoginID =Convert.ToInt32( this.GridView1.DataKeys[i]["LoginID"]);
int d=LoginInfoBLL.Delete(LoginID);
if (d < 1)
{
this.Response.Write("<script>alert('删除成功');</script>");
this.Bind(1);
}
else
{
this.Response.Write("<script>alert(' 删除失败');</script>");
this.Bind(1);
}
}
}
if (blSelected == false)
- yijiansh2011-09-07内容和示例都很合理,关于checkbox的全选很好
- 波波论坛2015-02-08资料很好,很有价值!不过不过具体深入
- 粉丝: 7
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip