技术开发 频道

扩展GridView控件 - 响应行的单击事件和双击事件


【IT168技术文档】

  扩展GridView控件:
  响应行的单击事件和双击事件,并在服务端处理

  使用方法(设置属性):
  BoundRowClickCommandName - 行的单击事件需要绑定的CommandName
  BoundRowDoubleClickCommandName - 行的双击事件需要绑定的CommandName


  单击
using System; using System.Collections.Generic; using System.Text; using System.Web.UI.WebControls; using System.Web.UI; namespace YYControls.SmartGridViewFunction { /**//// <summary> /// 扩展功能:响应行的单击事件 /// </summary> public class RowClickFunction : ExtendFunction { List<string> _rowClickButtonUniqueIdList = new List<string>(); /**//// <summary> /// 构造函数 /// </summary> public RowClickFunction() : base() { } /**//// <summary> /// 构造函数 /// </summary> /// <param name="sgv">SmartGridView对象</param> public RowClickFunction(SmartGridView sgv) : base(sgv) { } /**//// <summary> /// 扩展功能的实现 /// </summary> protected override void Execute() { this._sgv.RowDataBoundCell += new SmartGridView.RowDataBoundCellHandler(_sgv_RowDataBoundCell); this._sgv.RenderBegin += new SmartGridView.RenderBeginHandler(_sgv_RenderBegin); } /**//// <summary> /// RowDataBoundCell /// </summary> /// <param name="sender"></param> /// <param name="gvtc"></param> void _sgv_RowDataBoundCell(object sender, GridViewTableCell gvtc) { TableCell tc = gvtc.TableCell; foreach (Control c in tc.Controls) { IButtonControl ibc = c as IButtonControl; if (ibc != null && this._sgv.BoundRowClickCommandName == ibc.CommandName) { // 300毫秒后响应单击事件的脚本(避免和双击事件冲突) string js = this._sgv.Page.ClientScript.GetPostBackClientHyperlink(c, ""); js = js.Insert(11, "setTimeout(\""); js += "\", 300)"; GridViewRow gvr = tc.Parent as GridViewRow; Helper.Common.SetAttribute(gvr, "onclick", js, AttributeValuePosition.Last); _rowClickButtonUniqueIdList.Add(c.UniqueID); } } } /**//// <summary> /// RenderBegin /// </summary> /// <param name="sender"></param> /// <param name="writer"></param> void _sgv_RenderBegin(object sender, HtmlTextWriter writer) { foreach (string uniqueId in this._rowClickButtonUniqueIdList) { // 注册回发或回调数据以进行验证 this._sgv.Page.ClientScript.RegisterForEventValidation(uniqueId); } } } }
0
相关文章