GridView中添加行单击事件.md
1.使用说明
1.方法来源
该方法主要参考StackOverflow上面的答案和下面这篇文章
http://www.codeproject.com/Articles/15677/Clickable-and-Double-Clickable-Rows-with-GridView
2.注意事项
引入行单击事件会覆盖掉原始的单击事件和双击事件,所以如果不是有特殊功能需求,使用前请慎重
如果仅仅是简单的单击改变行样式,最好使用其它方法
例如:http://blog.bossma.cn/dotnet/gridview-select-row-no-postback/ (使用javascript实现GridView无刷新选中行(变色))
3.原理
使用RowDataBound事件,添加并隐藏选择列,给每行添加点击事件
2.Code
1.前台
GridView列中添加选择列
<asp:CommandField HeaderText="选择" ShowSelectButton="True" />
GridView添加OnRowDataBound事件
OnRowDataBound="GridViewOrder_RowDataBound"
2.后台
RowDataBound事件
protected void GridViewOrder_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState & DataControlRowState.Edit) != DataControlRowState.Edit)
{
// 隐藏选择列
// 具体是Cells[n]看具体情况,也可以一开就把选择列甩在GridView的最开始
GridViewOrder.HeaderRow.Cells[8].Visible = false;
e.Row.Cells[8].Visible = false;
//增加点击事件
PostBackOptions myPostBackOptions = new PostBackOptions(this);
myPostBackOptions.AutoPostBack = false;
myPostBackOptions.RequiresJavaScriptProtocol = true;
myPostBackOptions.PerformValidation = false;
String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "Select$" + e.Row.RowIndex.ToString());
e.Row.Attributes.Add("onclick", evt);
}
}
}
重写Render事件
/// <summary>
/// 重写了Render,使得Select按钮支持了不安全的postback
/// 使用时,只需要替换掉两个GridViewOrder即可
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
foreach (GridViewRow r in GridViewOrder.Rows)
{
if (r.RowType == DataControlRowType.DataRow)
{
Page.ClientScript.RegisterForEventValidation(GridViewOrder.UniqueID, "Select$" + r.RowIndex);
}
}
base.Render(writer);
}
SelectedIndexChanging事件
在里面可以写具体的单击事件代码
protected void GridViewOrder_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
// 没有任何后台代码,仅通过前台的 SelectedRowStyle 配合实现了单击行更改样式的功能
}
GridView中添加行单击事件.md的更多相关文章
- GridView中CheckBox单击事件(oncheckedchanged)
在GridView中加入 CheckBox控件,想通过单击选中出现如下图所示效果: 具体做法是: 前台GV部份省掉.只加关键的CheckBox部份. view plaincopy to clipboa ...
- asp.net gridview中增加单击单元格事件
实现功能:单击表格中某个单元格(不是第一列.最后一列.最后一行,不为0)根据行第一个单元格内容及列名来查询详细内容,在消息框中查看显示. 在代码中增加 protected override void ...
- asp.net中父子页面通过gridview中的按钮事件进行回传值的问题
这两天写BS程序,遇到父子页面传值的问题,以前没写过web系统,用了几天时间才将问题解决,总结下记录下来: 问题描述: 父页面A中有一个gridview,每行6个列,有5列中均有一个按钮,单击按钮,会 ...
- GridView中的GridView1_RowCommand事件
GridView1_RowCommand事件是GridView中生成事件时激发 比如说页面中有一个按钮给他设置CommandName属性 <asp:Button ID="btnCheH ...
- gridview中的相关事件操作
原文发布时间为:2008-07-27 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- Gridview中奇偶数行颜色设置
在gridview中的RowDataBound事件里面写 switch (e.Row.RowType) {case DataControlRowType.Header: e.Row.BackColor ...
- RecyclerView的Item的单击事件
RecyclerView 的每个Item的点击事件并没有像ListView一样封装在组件中,需要Item的单击事件时就需要自己去实现,在Adapter中为RecyclerView添加单击事件参考如下: ...
- RecyclerView 的 Item 的单击事件
RecyclerView 的每个Item的点击事件并没有像 ListView 一样封装在组件中,需要 Item 的单击事件时就需要自己去实现,在 Adapter 中为RecyclerView 添加单击 ...
- GridView/DataGrid行单击和双击事件实现代码_.Net教程
功能: 单击选中行,双击打开详细页面 说明:单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间 ;当双击时,通过全局变量 dbl_click 来取消单击事件的响应 ...
随机推荐
- BZOJ 4269: 再见Xor [高斯消元 线性基]
4269: 再见Xor Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. 我太愚蠢了连数组开小了以及$2^{ ...
- 微信小程序页面跳转的问题(app.json中设置tarBar后wx.redirectTo和wx.navigateTo均不能实现跳转到指定的页面)
1.设置的tabBar代码片段: "tabBar": { "list": [ { "pagePath": "pages/homep ...
- 【原】font-awesome IE6支持代码本人测试成功
<!--[if (gte IE 6)&(lte IE 8)]> <script type="text/javascript" src="js/n ...
- DaemonSet 案例分析 - 每天5分钟玩转 Docker 容器技术(130)
本节详细分析两个 k8s 自己的 DaemonSet:kube-flannel-ds 和 kube-proxy . kube-flannel-ds 下面我们通过分析 kube-flannel-ds 来 ...
- Git教程:
使用前配置: git init git config --global user.name "yanpeng1314" git config --global user.email ...
- php header解决跨域问题
header('Access-Control-Allow-Credentials:true'); header('Access-Control-Allow-Origin:http://wdjkj.co ...
- 快速构建一个简单的单页vue应用
技术栈 vue-cli webpack vux,vux-loader less,less-loader vue-jsonp vue-scroller ES6 vue-cli:一个vue脚手架工具,利用 ...
- 怎样调整XenServer下面Linux虚拟机的磁盘大小
登录到XenServer. 修改虚拟机磁盘大小修改storage 磁盘大小 启动虚拟机 修改分区大小Hex code (type L to list codes): 8eChanged system ...
- 织梦调用seotitle
如果有seotitle则调用seotitle,没有则调用title {dede:field.array runphp='yes'} if(@me['seotitle']=='') {@me=@me[' ...
- C语言_初步了解一下指针
指针的基本概念 在计算机中,所有的数据都是存放在存储器中的. 一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等.为了正确地访问这 ...