转载自: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行中按钮的使用的更多相关文章

  1. ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  2. 利用JavaScript选择GridView行

    本篇技巧和诀窍记录的是:利用JavaScript选择GridView行. 当我们想在GridView中添加删除.选择功能时,我们通常的做法是利用模板功能在每行添加一个按钮控件或者超链接按钮控件,单击按 ...

  3. AppBoxPro - 细粒度通用权限管理框架(可控制表格行内按钮)源码提供下载

    特别声明: 提供的源代码已经包含了 AppBoxPro 的全部源代码,用 VS2012 打开项目后,直接 Ctrl+F5 可以运行起来(默认使用VS自带的LocalDB数据库). FineUIPro是 ...

  4. Windows下的cmd命令行中设置环境编码

    我们都知道,Windows下的cmd命令行默认编码是Windows系统的编码,就是ANSI编码或者说是GBK编码的,这样我们编写的很多应用比如php编写utf-8编码的应用在命令行下面运行时都会出现乱 ...

  5. Asp.Net 之 获取GridView行的DataKeys

    1.后台任意一个位置获取GridView行的主键值 foreach (GridViewRow row in GridView1.Rows) { string order_Id=this.GridVie ...

  6. wpf datagrid 中按钮 动态显示

    /若datagrid出现滚动条可能会出现问题需要加上下面俩句话.//因为出滚动条时,为了显示加速,datagrid会加载一部分数据.另一些数据当滚动时在加载进去 这样初始化获取不到这些数据.//在da ...

  7. Cocos Creator中按钮组件数组的使用

    Cocos Creator游戏开发中经常使用到按钮,特别是大量按钮的情况,此时使用数组来管理这些按钮就显得更具通用性.我大致走了一下官方的示例,好像没有发现有这个小内容(或者有,但我却是没有找到),于 ...

  8. 【转】WriteMessage的信息在AutoCAD中命令行中实时显示

    之前程序中有段发送信息到命令行上显示的代码,如下:     ed.WriteMessage("开始标注横断面高程,请稍候!");     但是发现命令行中并不马上显示,代码也明明运 ...

  9. 命令行中mysql乱码问题

    1.现象  在命令行中,执行sql语句如果包含中问题,提示“ Data too long for column '列名' at row 1”   或者在命令行中查询出的结果中,中文乱码   2.分析 ...

随机推荐

  1. Mysql CAST()函数

      (1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型.以下例子用于将文本字符串'12'转换为整型: SELECT CAST('12' AS int) (2).返回 ...

  2. 零基础学python-2.7 列表与元组

    事实上,能够把列表和元组看成普通的数组.可是这个数组能够存储不同的数据类型(对象) 列表和元组的差别   列表 元组 使用的符号 [] () 元素数量 可变 不可变 改动元素 不能够 能够 假设大家有 ...

  3. 【SSH进阶之路】Hibernate基本映射(三)

    [SSH进阶之路]Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心.採用对象化的思维操作关系型数据库. [SSH进阶之路]Hibernate搭建开发环境+简单实例 ...

  4. markdown流程图语法

    从网上找了非常久关于markdown语法的文章.机会微乎其微.大多所指向的都是同一个页面https://github.com/adrai/flowchart.js 这是github上的一个开源项目,里 ...

  5. centos7.0 安装redis 3.2.9

    wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar xzf redis-3.2.9.tar.gz cd redis-3.2.9 ...

  6. CAFFE学习笔记(四)将自己的jpg数据转成lmdb格式

    1 引言 1-1 以example_mnist为例,如何加载属于自己的测试集? 首先抛出一个问题:在example_mnist这个例子中,测试集是人家给好了的.那么如果我们想自己试着手写几个数字然后验 ...

  7. 怎样过滤跨站恶意脚本攻击(XSS)

    什么是XSS? XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见于web application中的计算机安全漏洞.XSS通过在用户端注入恶意的可运行脚本,若服务器端对用 ...

  8. URAL 1010 Discrete Function【简单暴力】

    链接:  http://acm.timus.ru/problem.aspx?space=1&num=1010 http://acm.hust.edu.cn/vjudge/contest/vie ...

  9. Python菜鸟之路:Python基础-线程池注释

    import sys import threading import Queue import traceback # 定义一些Exception,用于自定义异常处理 class NoResultsP ...

  10. Action三种编写方式

    1.     创建普通类不实现接口与继承类 2.     实现Action接口 3.     继承ActionSupport类(常用)