双击Gridview时为编辑状态
就是当我双击gridview的某一单元格时,该单元格就为编辑状态????哪位仁兄帮帮忙呀,急!急!急!
[解决办法]
js 单点击了以后,就把它启用, 可以编辑
[解决办法]
- HTML code
<%@ Page Language="C#" debug="true"%><%@ Import Namespace="System.Data" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { bool isAJAXPost = IsAJAXPost(); if (isAJAXPost)//是 { Response.Write("AJAX PostBack Data\nName:" + Request.Form["name"] + "\nNumber:" + Request.Form["number"] + "\nServerTime:" + DateTime.Now.ToString());//提供给ajax对象使用的信息 Response.End();//结束下面程序的执行 } if (!IsPostBack) { GridView1.DataSource = BuildGridViewDataSource(); GridView1.DataBind(); } } /// <summary> /// 是否是ajaxpost回来的数据,并根据数据更新表什么的 /// </summary> /// <returns>是否是ajax提交的数据</returns> private bool IsAJAXPost() { string Up = Request.Form["up"]; if (Up == "up")//此参数执行是否是ajax post回来的 { string Name = Request.Form["name"]; string Number = Request.Form["Number"]; //下面可以执行你的更新操作什么的 //====== //====== return true;//返回 } return false; } /// <summary> /// 用来做例子中的数据源 /// </summary> /// <returns></returns> private DataTable BuildGridViewDataSource() { DataTable dt = new DataTable(); dt.Columns.Add("Number"); dt.Columns.Add("Name"); DataRow dr = dt.NewRow(); dr["Number"] = "1000"; dr["Name"] = "张三"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Number"] = "1001"; dr["Name"] = "李四"; dt.Rows.Add(dr); return dt; } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //实现单击时确发编辑 //e.Row.Attributes.Add("onclick", "OnClickedRow('" + e.Row.RowIndex + "');"); //实现双击时确发编辑 e.Row.Attributes.Add("ondblclick", "OnClickedRow(this);"); } } </script><html> <head></head> <body> <form runat="server"> <asp:GridView Width="500" ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField DataField="Number" HeaderText="编号" /> <asp:BoundField DataField="Name" HeaderText="姓名" /> </Columns> </asp:GridView> </form> <script type="text/javascript"> var FocusTR=null; function createObj(){ var o=null; if(typeof(XMLHttpRequest)!="undefined") return new XMLHttpRequest();//ie7和w3c if(window.ActiveXObject)//ie6- { var MSXML=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHTTP"]; for(var i=0;i<MSXML.length;i++) { try { o= new ActiveXObject(MSXML[i]); return o; } catch(e) {} } }}function OnClickedRow(tr){ if(FocusTR==tr)return;//已经获取编辑状态后再双击退出 if(FocusTR!=null)//ajax提交上次编辑行的数据 { var txt1=FocusTR.cells[0].getElementsByTagName("input")[0].value; var txt2=FocusTR.cells[1].getElementsByTagName("input")[0].value; var data="up=up&name="+escape(txt1)+"&number="+escape(txt2); PostData(data);//启动ajax对象来post数据回服务器提供更新 //=========还原状态 FocusTR.cells[0].innerHTML=txt1; FocusTR.cells[1].innerHTML=txt2; } var c1=tr.cells[0].innerHTML; var c2=tr.cells[1].innerHTML; //更换为text tr.cells[0].innerHTML="<input type='text' value='"+c1+"'/>"; tr.cells[1].innerHTML="<input type='text' value='"+c2+"'/>"; FocusTR=tr;//更改行}function PostData(data){ var o=createObj(); if(o) { o.onreadystatechange=function() { if(o.readyState==4)//已经返回 { if(o.status==200)//成功返回 alert(o.responseText); else alert("发生错误!"); } } //aspx文件名改后注意修改这个 o.open("post","test.aspx",true); o.setRequestHeader("content-type","application/x-www-form-urlencoded");//post时需要设置此头 o.send(data);//发送请求和数据 } else alert("创建对象失败!");} </script> </body></html>