GridView行中按钮的使用
转载自:http://blog.csdn.net/hongdi/article/details/6455947
GridView行中按钮的使用
在web项目的过程中,特别是开发ASP.NET应用程序,经常会用到数据显示空间GridView控件,然后需要每行的结尾放置一个button或linkbutton来对当前行进行操作。如下图,添加一个删除按钮,当点击按钮时删除所在行的记录。
本文将提供5种常用的方法来实现行记录的删除操作,并由此来了解下GridView中按钮的使用。
方法1:
在GridView控件中放置一个模板列,往里面放置一个按钮,并用主键值绑定按钮,代码如下:
<asp:TemplateField HeaderText="方法1">
<ItemTemplate>
<asp:Button ID="btnDelOne" runat="server" CommandArgument='<%# Eval("ID") %>'
onclick="btnDelOne_Click" Text="删除" />
</ItemTemplate>
</asp:TemplateField>
并按钮添加OnClick点击事件处理程序:
protected void btnDelOne_Click(object sender, EventArgs e)
{
Button btn=(Button)sender;//注意控件类型的转换
string id=btn.CommandArgument;//获取得到控件绑定的对应值
DeleteByID(id);//DeleteByID是一个根据ID进程删除的函数
}
方法2:
打开GridView的智能标签——>编辑列,添加一个ButtonField,并设置相应的属性值得,如图:
注意CommandName属性在此把他设置为del,然后给GridView空间添加RowCommand事件,表示GridView内生成事件时激发。其事件处理为:
protected void grvData_RowCommand(object sender, GridViewCommandEventArgs e)
{
//"删除"按钮也会调用此函数
if (e.CommandName == "del")
{
//注意此时的CommandArgument表示的是所在行的索引。
int index=int.Parse(e.CommandArgument.ToString());
string id = grvData.Rows[index].Cells[0].Text ;
DeleteByID(id);
}
}
方法3:
方法3跟方法2很类似,其实其底层原理是一致的,方法3中的按钮可以理解成是方法2种按钮的一个具体化(让按钮更加明确是用来做什么的)。其设置如图:
为其添加按钮事件,此事件为GridView空间RowDeleting事件,表示对数据源执行Delete命令时激发。如果不写此事件而使用本按钮,则在使用过程中会报错。为此添加时间处理为:
protected void grvData_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = grvData.Rows[e.RowIndex].Cells[0].Text;
DeleteByID(id);
}
注意这与方法2有所区别,方法2是通过按钮的e.CommandArgument去获取行索引,而本方法中则直接使用GridViewDeleteEventArgs e提供的行索引获取得到值。且方法2的按钮的CommandName是我们自定义的del,而本方法中则是Delete,微软已经帮我们预先设置好了的一个值,所以在其激发的时候它会先执行方法2中的RowCommand事件,然后再执行RowDeleting事件,所以也可以把方法2和方法3进行整合成一个事件处理函数,但RowDeleting也必须的有,只是里面什么内容都不用写。
方法4:
方法3和方法4基本配置和使用基本一致,只是当初设计他们时只是为了更好的区别他们所执行的操作。本方法选择添加“选择”按钮,如图:
其事件处理函数类似方法3,如下:
protected void grvData_SelectedIndexChanged(object sender, EventArgs e)
{
//方法1,直接过去数字键的值
//string id = grvData.SelectedDataKey.Value.ToString();
//方法2,获取选中行的索引,在通过索引获取值
string id = grvData.Rows[grvData.SelectedIndex].Cells[0].Text;
DeleteByID(id);
}
方法4处理房方法里也提供2种方法用于获得相应的值。一个跟方法3种类型都是获取所在行的行索引。方法4还有一个方法是直接获取所在行的数字键的值。方法4执行的时候也会调用RowCommand,只是此时CommandName值变成Select。
方法5:
方法5是比较传统的做法,就是给每行添加一个链接,在链接中传递一个url参数,在删除页面获取url参数并执行相应的删除操作…这个比较简单就不再赘述。
下面给出4种方法的调用对比情况:
OnClick |
RowCommand |
RowDeleting |
SelectedIndexChanged |
|
方法1 |
○ |
|||
方法2 |
○ |
|||
方法3 |
○ |
○ |
||
方法4 |
○ |
○ |
○表示会掉用,我们发现方法3和方法4都会进行2次调用,而且从设计方法3方法4中,要使用微软提供便捷按钮,除了激发RowCommand处理方法外,还会激发所对应的特殊操作,如删除和选择等等。基本做还是建议使用方法1,方法2,方法5也是一种很不错选择。
GridView行中按钮的使用的更多相关文章
- ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- 利用JavaScript选择GridView行
本篇技巧和诀窍记录的是:利用JavaScript选择GridView行. 当我们想在GridView中添加删除.选择功能时,我们通常的做法是利用模板功能在每行添加一个按钮控件或者超链接按钮控件,单击按 ...
- AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载
特别声明: 提供的源代码已经包含了 AppBoxPro 的全部源代码,用 VS2012 打开项目后,直接 Ctrl+F5 可以运行起来(默认使用VS自带的LocalDB数据库). FineUIPro是 ...
- Windows下的cmd命令行中设置环境编码
我们都知道,Windows下的cmd命令行默认编码是Windows系统的编码,就是ANSI编码或者说是GBK编码的,这样我们编写的很多应用比如php编写utf-8编码的应用在命令行下面运行时都会出现乱 ...
- Asp.Net 之 获取GridView行的DataKeys
1.后台任意一个位置获取GridView行的主键值 foreach (GridViewRow row in GridView1.Rows) { string order_Id=this.GridVie ...
- wpf datagrid 中按钮 动态显示
/若datagrid出现滚动条可能会出现问题需要加上下面俩句话.//因为出滚动条时,为了显示加速,datagrid会加载一部分数据.另一些数据当滚动时在加载进去 这样初始化获取不到这些数据.//在da ...
- Cocos Creator中按钮组件数组的使用
Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...
- 【转】WriteMessage的信息在AutoCAD中命令行中实时显示
之前程序中有段发送信息到命令行上显示的代码,如下: ed.WriteMessage("开始标注横断面高程,请稍候!"); 但是发现命令行中并不马上显示,代码也明明运 ...
- 命令行中mysql乱码问题
1.现象 在命令行中,执行sql语句如果包含中问题,提示“ Data too long for column '列名' at row 1” 或者在命令行中查询出的结果中,中文乱码 2.分析 ...
随机推荐
- tomcat7与tomcat6引入标签taglib的区别:taglib definition not consistent with specification version
org.apache.tomcat.util.digester.Digester startElement严重: Begin event threw exceptionjava.lang.Illega ...
- str_replace 替换 小技巧
// $id:1 $id:1,2,3,4,5 public function delete($id) { // 把1替换掉不允许删除ID为1的角色 在前面分别加了 , 号 ...
- MySQL的max()函数使用时遇到的小问题
通常我们获取某个表的某个字段最大值时可以使用max()函数. 使用场景举例: 获取某个表id的最大值:SQL: SELECT max(id) FROM table_name; SELECT max(` ...
- Intersection(计算几何)
Intersection Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)To ...
- WSGI协议解析
WSGI协议中包含两个角色:服务器方和应用程序: 服务器方:其调用应用程序,给应用程序提供(环境信息)和(回调函数), 这个回调函数是用来将应用程序设置的http header和status等信息传递 ...
- SpringMVC拦截器实现登录认证
项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: aopalliance.jar:这个包是AOP联盟的API包,里面包含了针对 ...
- 关于Spring学习解析顺序
最高接口BeanFactory开始解析,暂定为一级接口! 从上往下进行分析学习! 分析的Spring源码版本是:4.3.3
- Activiti使用过程_1
1 微信公众号:
- Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World(转发)
[JSP]Maven+SSM框架(Spring+SpringMVC+MyBatis) - Hello World 来源:http://blog.csdn.net/zhshulin/article/de ...
- python 的for else语句
for中间不是break出来的,是正常循环完跳出循环的会执行else内的语句 while else语句也是如此 这个以前的常见语言没有,特此记录