GridView行中按钮的使用

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也是一种很不错选择。

时间: 2024-10-29 19:11:11

GridView行中按钮的使用的相关文章

jquary根据td中按钮的元素属性删除tr行(删选出想删除的行)

删除没有蓝色按钮的行. <html> <tr> <td>凉山彝族自治州分行</td> <td>管理网</td> <td>离行式ATM</td> <td class="text-center">MSTP</td> <td>西昌市西客站航天阳光</td> <td class="text-center">建设中<

datagrid行中添加图片按钮

columns: [[ { field: 'id', title: '删除', width: 30, formatter: function (value,row,index) { var d = '<a href="#" onclick =DeleteById("' + row.id + '")><img src="/Images/delete.png" /></a>'; return d; } } ]] 主

利用JavaScript选择GridView行

利用JavaScript选择GridView行 本篇技巧和诀窍记录的是:利用JavaScript选择GridView行. 当我们想在GridView中添加删除.选择功能时,我们通常的做法是利用模板功能在每行添加一个按钮控件或者超链接按钮控件,单击按钮利用RowCommand获取每行的ID. 下面我们利用JavaScript完成这一功能. 我们可以通过调用JavaScirpt函数改变单击的行的背景颜色来模拟选择的行,这里需要声明一个隐藏字段,从JS中获得选取GridView行的ID.在选择/删除事

[WinForm][DevExpress]自定义GridControl中按钮文字内容

最近项目开发中,使用到了GridControl的FindPanel,这样可以很好的对数据进行筛选,可是所展现的按钮文字是英文,如图: 那怎么定义两个按钮问题,以符合项目需求了?经过一番搜索发现利用GridLocalizer可以很好实现: 核心代码: public class BuilderGridLocalizer : GridLocalizer { Dictionary<GridStringId, string> CusLocalizedKeyValue = null; /// <su

未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示“未能启用约束.一行或多行中包含违反非空.唯一或外键约束的值.”的异常信息. 在网上找了查了一些原因:http://www.cnblogs.com/muzihai1988/archive/2011/05/04/2036502.html 原因分析:强类型的DataTable和SQL语句查询出的结果不匹配. 简单说就是强类型的DataTable比S

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

我们都知道,Windows下的cmd命令行默认编码是Windows系统的编码,就是ANSI编码或者说是GBK编码的,这样我们编写的很多应用比如php编写utf-8编码的应用在命令行下面运行时都会出现乱码的情况,原因就是因为运行环境的编码使用自己的编码去解析程序运行结果,而程序本身返回编码和解析编码不一致,最后导致乱码情况的发生. 遇到这种情况,我们可以通过设置cmd命令行环境的编码使编码保持统一来解决,方法如下: 在命令行中,有个命令是chcp,这个命令是用来显示当前活动代码页编号的,也可以理解

MFC中按钮控件的用法笔记(转)

VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1:则m_Button1.EnableWindow(true); 使按钮处于允许状态m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示 VC学习笔记2:控件的隐藏与显示 用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件. 例1:CWnd *pWnd;pWnd = GetDlgItem(

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

特别声明: 提供的源代码已经包含了 AppBoxPro 的全部源代码,用 VS2012 打开项目后,直接 Ctrl+F5 可以运行起来(默认使用VS自带的LocalDB数据库). FineUIPro是商业程序,仅包含v1.7.0公测版的DLL:当然你也可以自行把 FineUIPro 换成 FineUI(开源版),开源版下载地址. AppBoxPro 是基于 FineUIPro 和 Entity Framework 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块

057调整屏幕中按钮的边间距

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 @property (strong, nonatomic) UIButton *btnTitleEdgeInsets; 5 6 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface ViewContr