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 来取消单击事件的响应 ...
随机推荐
- Windows Server 2016-安装AD域服务注意事项
使用 Active Directory域服务 (AD DS) 服务器角色,可以创建用于用户和资源管理的可伸缩.安全及可管理的基础机构,并可以提供对启用目录的应用程序(如 Microsoft Excha ...
- 有关static静态方法知识的收集
1.何时使用静态方法: 如果某些操作不依赖具体实例,那它就是静态的,反之如果某些操作是依赖具体实例的(例如访问一个特定会员的名称),那它就应该是实例化的. 2.静态方法和实例方法的区别主要体现在两个方 ...
- qt中的tcp编程
server .server.h #define DIALOG_H #include <QDialog> #include <QTcpServer> #include < ...
- jQuery中animate()方法用法实例
本文实例讲述了jQuery中animate()方法用法.分享给大家供大家参考.具体分析如下: 此方法用于创建自定义动画,并且能够规定动画执行时长.擦除效果.动画完成后还可以地触发一个回调函数. ani ...
- ThreadLocal 简述
ThreadLocal的理解 Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量.因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们 ...
- 实现dedecms全站动态浏览 并实现伪静态
dedecms默认是生成静态文件,如何实现织梦全站动态浏览呢? 织梦全站动态浏览方法 1. 修改首页为动态浏览 后台-生成-更新首页-勾选"仅动态浏览" 2. 修改栏目页为动态浏览 ...
- centos 6.* 配置端口
vi /etc/sysconfig/iptables 将 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT (允 ...
- C#委托与事件--简单笔记
委托 简单记录点东西 适合似懂非懂的朋友看看 委托类型用来定义和响应应用程序中的回调. 借此可以设计各种有面向对象特性的代码模式.下面要说的事件在我看来就是委托的一种实现,再深一步讲,利用委托加事件, ...
- JPA数据懒加载LAZY和实时加载EAGER(二)
懒加载LAZY和实时加载EAGER的概念,在各种开发语言中都有广泛应用.其目的是实现关联数据的选择性加载,懒加载是在属性被引用时,才生成查询语句,抽取相关联数据.而实时加载则是执行完主查询后,不管是否 ...
- Centos下安装php扩展sphinx
官方地址:http://pecl.php.net/package/sphinx wget http://pecl.php.net/get/sphinx-1.3.3.tgz tar -zxvf sphi ...