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 来取消单击事件的响应 ...
随机推荐
- Xposed快速hook关键点
0x01 导读 工作中,常常需要针对各种app进行快速代码定位,找到代码修改和调试各种功能,就不得不面对xposed来进行一系列快速定位关键代码的问题了.那么问题来了,如何快速找到代码呢? 这里值这针 ...
- VUE2.0 elemenui-ui 2.0.X 封装 省市区三级
1. 效果图 2. 版本依赖 vue 2.X , elementui 2.0.11 使用element ui <el-form>标签 3. 源码 components/CityL ...
- idea Code激活
参考:http://blog.csdn.net/gnail_oug/article/details/70677272 1.将激活包复制到bin安装目录: 2.在安装的idea下面的bin目录下面有2个 ...
- ubuntu下smb的配置
PS: 转自Ubuntu中文论坛 -------------------------------------------------------------------------------- ...
- MySQL绿色版安装
下载MySQL绿色版 去官方下载mysql.,我下载的是 mysql-5.6.27-winx64,下载后解压缩到D:盘. 安装MySQL服务 拷贝my-default.ini重命名为my.ini,修改 ...
- gitlab手动安装
[博客园 淡水的天空]] 老版 新版 Omnibus package installation Manually
- Apache、Lighttpd、Nginx 三种web服务器对比
简介 1. Apache Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.Apac ...
- SSE图像算法优化系列十七:多个图像处理中常用函数的SSE实现。
在做图像处理的SSE优化时,也会经常遇到一些小的过程.数值优化等代码,本文分享一些个人收藏或实现的代码片段给大家. 一.快速求对数运算 对数运算在图像处理中也是个经常会遇到的过程,特备是在一些数据压缩 ...
- Java经典编程题50道之四十三
一个偶数总能表示为两个素数之和. public class Example43 { public static void main(String[] args) { f(); ...
- bzoj 2073 暴力
2073: [POI2004]PRZ Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 442 Solved: 327[Submit][Status][D ...