分享代码:自定义gridview添加行双击事件
节选自实际项目中的部分代码
[ParseChildren(true)][PersistChildren(false)][ToolboxData("<{0}:GridViewPlus runat=server></{0}:GridViewPlus>")][ToolboxBitmap(typeof(GridView))]public class GridViewPlus : GridView { #region constructors public GridViewPlus() : base() { } public GridViewPlus(string pId) { this.ID = MyHelper.ToString(pId); } #endregion constructors public delegate void RowDblClickEventHandler(object sender, int RowIndex); public event RowDblClickEventHandler RowDblClick; protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.Load_RowDblClickEventHandler(); } protected virtual void OnRowDblClick(object sender, int RowIndex){ this.SelectedIndex = RowIndex; } private void Load_RowDblClickEventHandler() { string _EventTarget = MyHelper.ToString(this.Page.Request.Params["__EVENTTARGET"]); string[] _EventArguments = MyHelper.ToString(this.Page.Request.Params["__EVENTARGUMENT"]).Split('$'); string _EventName = MyHelper.ToString(_EventArguments[0]); if(_EventTarget == this.ID && _EventName == "RowDblClick") { int _index = MyHelper.ToInt(_EventArguments[1]); this.RowDblClick(this, _index); } } protected override void OnRowDataBound(GridViewRowEventArgs e) { GridViewRow _row = e.Row; string _index = MyHelper.ToString(_row.RowIndex); string _arg = "RowDblClick$" + _index; string _evt = this.Page.ClientScript.GetPostBackEventReference(this, _arg); _row.Attributes.Add("ondblclick", _evt); } }//endclass
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><script language="javascript">function yourfunction(obj){ for(var i=0;i<22;i++) { document.getElementById(i).style.backgroundColor="#400000"; } document.getElementById(obj).style.backgroundColor="red"; } function yourfunction2(obj){ alert(obj); } </script><body> <form runat="server"> <div> <asp:GridView runat="server" AutoGenerateColumns="False" DataKeyNames="au_id" DataSourceID="SqlDataSource1" OnRowCreated="GridView1_RowDataBound" EnableSortingAndPagingCallbacks="True" > <Columns> <asp:BoundField DataField="au_id" HeaderText="au_id" ReadOnly="True" SortExpression="au_id" /> <asp:BoundField DataField="au_lname" HeaderText="au_lname" SortExpression="au_lname" /> <asp:BoundField DataField="au_fname" HeaderText="au_fname" SortExpression="au_fname" /> <asp:BoundField DataField="phone" HeaderText="phone" SortExpression="phone" /> <asp:BoundField DataField="address" HeaderText="address" SortExpression="address" /> <asp:BoundField DataField="city" HeaderText="city" SortExpression="city" /> <asp:BoundField DataField="state" HeaderText="state" SortExpression="state" /> <asp:BoundField DataField="zip" HeaderText="zip" SortExpression="zip" /> <asp:CheckBoxField DataField="contract" HeaderText="contract" SortExpression="contract" /> </Columns> <SelectedRowStyle BackColor="#400000" BorderStyle="Double" /> </asp:GridView> <asp:SqlDataSource runat="server" ConnectionString="<%$ ConnectionStrings:pubsConnectionString %>" SelectCommand="SELECT * FROM [authors]"></asp:SqlDataSource> </div> </form></body></html>
[解决办法]
支持开源,笑纳,谢楼主!
[解决办法]
GridView还有很多未知的有待于探索,Mark!
[解决办法]
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { for (int i = 0; i <= GridView1.Rows.Count; i++) { e.Row.Attributes.Add("onclick", "yourfunction(" +i+ ");"); e.Row.Attributes.Add("id",""+i+""); e.Row.Attributes.Add("ondblclick", "yourfunction2(" + i + ");"); } } }
[解决办法]
学习。
[解决办法]
...................................................
[解决办法]
学习……
[解决办法]
观赏代码成就
[解决办法]
支持一下!
[解决办法]
收藏。
[解决办法]
支持分享
[解决办法]
支持分享。。
[解决办法]
选自实际项目中的部分代码
[解决办法]
学习中....
[解决办法]
关注中
[解决办法]
内容存入剪贴板
[解决办法]