节选自实际项目中的部分代码[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

解决方案 »

  1.   

    使用的方法就像这个样子public override void CreateView() {
            base.CreateView();
            this.gvwQuery.RowDblClick += new GridViewPlus.RowDblClickEventHandler(gvwQuery_RowDblClick);
            }    void gvwQuery_RowDblClick(object sender, int RowIndex) {
            JSHelper.Alert(MyHelper.ToString( this.gvwQuery.SelectedDataKey["ProductName1"]));
            this.BindDetailView();
            }
      

  2.   

    <%@ 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>
    后台using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class Default4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.GridView1.SelectedIndex = 0;
        }
        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 + ");");
                } 
            } 
        } 
      
    }
      

  3.   

    GridView还有很多未知的有待于探索,Mark!
      

  4.   

     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 + ");");
                } 
            } 
        } 
    --------------------------------------------
    这代码写的 
      

  5.   

    重写GRIDVIEW 实现 谢谢分享 
      

  6.   

    MyHelper
    这个是什么东西?
      

  7.   

    重写gridview 实现更好的复用啊  值得推荐!  
      

  8.   

    这让我想起当年有人写了个GridView72绝技!
      

  9.   

    MyHelper
    这个类是什么?怎么没人回答捏
      

  10.   

    学习,gridview还是有很多东西值得挖掘的