GridView 单击选择行,双击打开详细页面,鼠标移到某行上变色
2009-07-17 12:45
288 查看
protected void gvwDepartment_RowDataBound(object sender, GridViewRowEventArgs e) {//判断是否是数据行 if (e.Row.RowState == DataControlRowState.Edit) { // 编辑状态 e.Row.Attributes.Remove("onclick"); e.Row.Attributes.Remove("ondblclick"); e.Row.Attributes.Remove("style"); e.Row.Attributes["title"] = "编辑行"; } if (e.Row.RowType == DataControlRowType.DataRow) { //鼠标移动到某行上,该行变色 e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='#ccddee'"); //鼠标移开后,恢复 e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor"); //鼠标显示为小手状态 e.Row.Attributes["style"] = "Cursor:hand"; } } protected override void Render(HtmlTextWriter writer) { // GridView foreach (GridViewRow row in gvwDepartment.Rows) { if (row.RowState == DataControlRowState.Edit) { // 编辑状态 row.Attributes.Remove("onclick"); row.Attributes.Remove("ondblclick"); row.Attributes.Remove("style"); row.Attributes["title"] = "编辑行"; continue; } if (row.RowType == DataControlRowType.DataRow) { // 单击事件,为了响应双击事件,需要延迟单击响应,根据需要可能需要增加延迟 // 获取ASP.NET内置回发脚本函数,返回 __doPostBack(<<EventTarget>>, <<EventArgument>>) // 可直接硬编码写入脚本,不推荐 row.Attributes["onclick"] = String.Format("javascript:setTimeout(/"if(dbl_click){{dbl_click=false;}}else{{{0}}};/", 1000*0.3);", ClientScript.GetPostBackEventReference(gvwDepartment, "Select$" + row.RowIndex.ToString(), true)); // 双击,设置 dbl_click=true,以取消单击响应 row.Attributes["ondblclick"] = String.Format("javascript:dbl_click=true;window.location.href='UpdateDepartment.aspx?DepartmentID={0}';", gvwDepartment.DataKeys[row.RowIndex].Value.ToString()); // row.Attributes["style"] = "cursor:pointer"; row.Attributes["title"] = "单击选择行,双击打开详细页面"; } } base.Render(writer); }
protected void gvwDepartment_SelectedIndexChanged(object sender, EventArgs e) {//设置选中行的颜色 gvwDepartment.SelectedRowStyle.BackColor = Color.FromArgb(222, 110, 222, 210); } protected void gvwDepartment_RowCreated(object sender, GridViewRowEventArgs e) {//将GRIDVIEW的第一列,即选择列隐藏 e.Row.Cells[0].Attributes.Add("style", "display:none;"); }
功能: 单击选中行,双击打开详细页面
说明:
单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间
当双击时,通过全局变量 dbl_click 来取消单击事件的响应
常见处理行方式会选择在 RowDataBound/ItemDataBound 中处理,这里我选择 Page.Render 中处理,至少基于以下考虑
1、RowDataBound 仅仅在调用 DataBind 之后才会触发,回发通过 ViewState 创建空件不触发 假如需要更多的处理,你需要分开部分逻辑到 RowCreated 等事件中
2、并且我们希望使用 ClientScript.GetPostBackEventReference 和 ClientScript.RegisterForEventValidation 方法 进行安全脚本的注册,而后者需要在页的 Render 阶段中才能处理
注意:需要在前台加入javascript
<script type="text/javascript">
// 辅助全局变量,指示是否双击
var dbl_click = false;
</script>
相关文章推荐
- GridView 单击选择行,双击打开详细页面,鼠标移到某行上变色
- GridView 单击选择行,双击打开详细页面,鼠标移到某行上变色
- ASP.NET GridView单击选中行,双击打开详细页面(網上轉載)
- JQuery表格插件:鼠标移过变色,双击打开新页面,单选(支持多选)变色
- ASP.NET GridView鼠标停留变色,行单击显示详细记录的事件处理
- gridview鼠标双击事件(跳转至新页面并传值)单击获取值
- DataGrid行随鼠标移动变色及单击双击行事件处理
- 在XP下如何改变鼠标单击打开和双击打开方式
- gridview双击后转到详细页面
- GridView双击回传父页面及改变选择行颜色
- 分享[ASP.NET]GridView鼠标停留变色和单击处理事件
- GridView鼠标停留变色和客户端单击处理事件
- JS实现鼠标双击页面向下滚动,单击停止的特效
- [原创]扩展GridView实现多选(全选)、点击行任意位置选择行、选中变色、添加双击事件等
- GridView 同时 实现鼠标经过颜色,鼠标离开恢复原颜色不变,鼠标单击与双击功能,
- ATOM基础教程一鼠标单击、双击打开文件细节区别(18)
- 扩展GridView实现多选(全选)、点击行任意位置选择行、选中变色、添加双击事件等
- GridView控件(六)—数据行响应鼠标的单击和双击事件
- DataGrid行随鼠标移动变色及单击双击行事件处理
- 红帽linux鼠标单击打开文件变为双击打开