ASP.NET中GridView控件删除数据的两种方法
今天在用GridView控件时,发现了一个问题,就是使用GridView控件在删除数据时的问题。接下来我们通过模板列方式和CommandField方式删除某条数据讲解下两者之间的区别。
方式一:通过模板列式删除数据
案例:在页面中添加一个GridView控件,然后通过编辑列的方式为GridView添加对应的列。如下图:红色圈起的部分为模板列的删除列
然后在编辑模板中拖一个删除按钮,如下图
接下来我们就可以编写代码了。
找到GridView的RowCommand事件,如下图
然后在源视图下,添加如下三个重要的属性
CommandName:命令的名称,值一般写成Delete,也可以写成其他名称,但是为了见名知意,我们写成Delete就ok
CommandArgument:命令参数
OnClientClick:注册客户端脚本,我们都知道,删除数据之前要给用户一个提示,可以通过该属性实现。如下图:
接下来我们就可以在RowCommand中编写代码了
if (e.CommandName == "Delete") //如果是删除按钮
{
string stuNO = e.CommandArgument.ToString(); //获取学生编号
string sql = "delete from Student where studentno='" + stuNO + "'";
int result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text);
if (result > 0)
{
Response.Write("<script type=text/javascript>alert('删除成功!')</script>");
BindData();
}
else
{
Response.Write("<script type=text/javascript>alert('删除失败!')</script>");
}
}
这样我们就可以删除一条数据了。
方式二:CommandField实现删除某条数据
由于CommandField方式会引发RowDeleting事件,所以我们直接在GridView的RowDeleting事件中编写代码就可以了,代码如下:
string stuNo = GridView1.DataKeys[e.RowIndex].Value.ToString();
string sql = "delete from Student where studentno='" +stuNo+ "'";
int result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text);
if (result > 0)
{
Response.Write("<script type=text/javascript>alert('删除成功!')</script>");
BindData();
}
else
{
Response.Write("<script type=text/javascript>alert('删除失败!')</script>");
}
最后我们对这两中方式的删除做个总结。
模板列中通过按钮删除某条数据:
01.不会引发RowDeleting事件
02.需要给模板列设置CommandName和CommandArgument
03.通过 string stuNO = e.CommandArgument.ToString();拿到主键
当然前提是在前台页面中用CommandArgument='<%# Bind("studentNo")%>'进行设置
通过ComandField删除某条数据
1. GridView1.DataKeyNames = new string[] { "StudentNo" };
2.既会触发RowCommand事件,又会触发RowDeleting事件,并且RowCommand事件
会先被触发,这样的话就不能再同一个GridView中既用模板列删除,又用超链接删除!
3.获取主键方式: string stuNo=GridView1.DataKeys[e.RowIndex].Value.ToString(); */
注意:之所以可以通过GridView1.DataKeys[e.RowIndex].Value.ToString();
获取到当前选中行的主键是因为为GridView设置了DataKeyNames。
好了,今天就先总结到这里。以后会陆续更新GridView的使用方法。如果这篇博文能给迷途中的你一丁点儿帮助,那便是极好的。特别是在这个推崇丢弃服务器端控件的时代。
ASP.NET中GridView控件删除数据的两种方法的更多相关文章
- 关于开发C#中的asp.net中gridview控件的使用
原文网址:http://blog.sina.com.cn/s/blog_67f1b4b201017663.html 1.GridView无代码分页排序: 效果图: 1.AllowSorting设为Tr ...
- MySQL中删除数据的两种方法
转自:http://blog.csdn.net/apache6/article/details/2778878 1. 在MySQL中有两种方法可以删除数据: 一种是delete语句,另一种是trunc ...
- C#实现Dll(OCX)控件自动注册的两种方法 网上找的 然后 自己试了试 还是可以用的
尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候,我们通常会通 ...
- C#实现Dll(OCX)控件自动注册的两种方法
尽管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写.当需要用到Dll引用的时候,我们通常会通 ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- asp.net中gridview控件的一些基本使用方法
[ 转自苏飞博客]共两篇 (1)菜单目录: GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合Gri ...
- Dev控件删除按钮的两种方式
测试版本15.2.10:在Dev控件中删除按钮空间有两种方式:1.鼠标右键出现Delete选项,这种删除是不完全的删除,只是删除了按钮的显示,实际上按钮还是存在于代码中的.2.用键盘上的Delete键 ...
- 一、winForm-DataGridView操作——控件绑定事件的两种方法
在winForm窗体中绑定(注册)事件的方法有两种: 一.绑定事件 双击控件,即进入.cs的代码编辑页面,会出现 类似于“ private void 控件名称_Click(object sender, ...
- 轻松学习Asp.net中的控件
C/S 结构,即大家熟知的客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销.目前大多数应用软件 ...
随机推荐
- android开源框架android-async-http使用
原文地址:http://www.open-open.com/lib/view/open1369637365753.html android-async-http开源框架可以是我们轻松的获取网络数据或者 ...
- Allegro16.3约束设置 (转载)
原文地址:http://blog.chinaunix.net/uid-21198646-id-3212383.html 差分对的约束设置 第一步,差分对的设置 差分对的设置有很多方法,下面介绍两种最常 ...
- scala学习心得(2)
scala类中可以通过override 重载方法 scala定义的函数式类不可被改变,这样传进去的参数就需要提前被检验,可以通过scala.predef包中的方法require方法 定义辅助构造器 d ...
- 纯手工打造(不使用IDE)java web 项目
必备环境 1.编译器:jdk 2.web服务器:tomcat 3.文本编辑器:sublime,编写java文件和jsp文件,没有的话用记事本也行. 一.建立工程目录结构,如下图 在操作系统下完成即可, ...
- C# 命令绑定
在构建WinForm程序中,为了使系统的结构清晰,有好的用户交互体验,实现不同按钮之间的交互,不使主窗体里面的代码臃肿.将按钮的命令通过类进行绑定,实现命令的管理使很有必要的. 该文章是将如何实现Bu ...
- componentsSeparatedByString,componentsJoinedByString,componentsSeparatedByCharactersInSet
将string字符串转换为array数组 NSArray *array = [Str componentsSeparatedByString:@","]; ==反向方法 将arr ...
- 集合框架之 List
集合框架就是Java中解决数组长度固定的问题,相当于动态数组,随时用,随时建立,内存释放 这个问题还不知道? 整个集合框架 概括为 List Set Map 这三个接口以及他们的实现类之间的应 ...
- Java核心知识点学习----使用Condition控制线程通信
一.需求 实现线程间的通信,主线程循环3次后,子线程2循环2次,子线程3循环3次,然后主线程接着循环3次,如此循环3次. 即:A->B->C---A->B->C---A-> ...
- Oracle常量
Oracle是有常量的,而SqlServer是没有常量的 queryFrom constant ) := ' hello ';
- STREAMS流机制
STREAMS流机制 基本概念 STREAMS(流)是系统V提供的构造内核设备驱动程序和网络协议包的一种通用方法,对STREAMS进行讨论的目的是为了理解系统V的终端接口,I/O多路转接中poll(轮 ...