Start with an existing GridView that is populated from a data source In the
ItemDataBound event handler of GridView, you assign a JavaScript ondblclick method
to the GridViewRow
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewDblClick.aspx.cs" Inherits="GridViewDblClick" %> <!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>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="Server" OnRowDataBound="GridView1_RowDataBound"> </asp:GridView> </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 GridViewDblClick : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Insure that the __doPostBack() JavaScript method is created... this.ClientScript.GetPostBackEventReference(this, string.Empty); if (!IsPostBack) { BindGridViewView(); } else { if (!(Request.Form["_EventTarget"] != null && Request.Form["_EventTarget"] == "myDblclick")) { GridView1.SelectedIndex = int.Parse(Request.Form["__EVENTARGUMENT"].ToString()); Response.Write(Request.Form["__EVENTARGUMENT"].ToString()); } } } private void BindGridViewView() { if (Session["strTemp"] != null) { GridView1.DataSource = Session["strTemp"] as DataTable; GridView1.DataBind(); } else { GridView1.DataSource = GetCustomMadeDataTable(); GridView1.DataBind(); } } public DataTable GetCustomMadeDataTable() { //Create a new DataTable object System.Data.DataTable objDataTable = new System.Data.DataTable(); //Create three columns with string as their type objDataTable.Columns.Add("ISBN", typeof(string)); objDataTable.Columns.Add("Title", typeof(string)); objDataTable.Columns.Add("Publisher", typeof(string)); objDataTable.Columns.Add("Year", typeof(string)); DataColumn[] dcPk = new DataColumn[1]; dcPk[0] = objDataTable.Columns["ISBN"]; objDataTable.PrimaryKey = dcPk; objDataTable.Columns["ISBN"].AutoIncrement = true; objDataTable.Columns["ISBN"].AutoIncrementSeed = 1; //Adding some data in the rows of this DataTable DataRow dr; for (int i = 1; i <= 5; i++) { dr = objDataTable.NewRow(); dr[1] = "Title" + i.ToString(); dr[2] = "Publisher" + i.ToString(); dr[3] = "200" + i.ToString(); objDataTable.Rows.Add(dr); } for (int i = 6; i <= 8; i++) { dr = objDataTable.NewRow(); dr[1] = "Computer" + i.ToString(); dr[2] = "TMH" + i.ToString(); dr[3] = "200" + i.ToString(); objDataTable.Rows.Add(dr); } Session["strTemp"] = objDataTable; return objDataTable; } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //Each row will then behave like a link, and when you select one it //can drive the behavior of another control(s) on your page //other way to select //e.Row.Attributes["ondblclick"] = ClientScript.GetPostBackClientHyperlink(this.GridView1, "Select$" + e.Row.RowIndex); e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';this.style.color='red'"; e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';this.style.color='black';"; e.Row.Attributes.Add("ondblclick", "Javascript:__doPostBack('myDblClick','" + e.Row.RowIndex + "');"); } } }


5 comments:
Thanks for this it was really helpful. I think theres a few typos in the code though. The case is different on the spellings of myDblClick and i think you need two underscores on __EventTarget.
I'm also not sure about the logic of the IF statement that checks __EventTarget. I don't think you need the NOT operator.
Got it working for me. Thanks again.
Even to me it was really help full. This initiative is enough for a developer. Thanks a lot. Just keep going on Mr./Ms. ?
This post was really useful. Thanks a lot.
This code is so 2008. ;-)
Thanks. I was struggling for this functionality for last 1 week, Now I got the solution. Thank you so much.
Post a Comment