无尽的控件-GridView行单击与双击
本次是 无尽的控件-GridView行单击与双击的实现
思路是如何呢? 其实就是给tr赋值onclick跟ondblclick而已
话不多说 看代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" EnableEventValidation="false" %> <!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>GridView单击与双击事件</title> <script language="javascript" type="text/javascript" > var dbl_click = false; </script> <style type="text/css"> *{font-size:12px} </style> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server" Width="100%" RowStyle-HorizontalAlign="Center" RowStyle-Height="25" > <Columns> <asp:BoundField HeaderText="学号" DataField="id" /> <asp:BoundField HeaderText="姓名" DataField="name" /> <asp:BoundField HeaderText="性别" DataField="sex" /> <asp:BoundField HeaderText="年龄" DataField="age" /> <asp:BoundField HeaderText="密码" DataField="pwd" /> <asp:BoundField HeaderText="入学时间" DataField="regtime" DataFormatString="{0:D}" /> <asp:BoundField HeaderText="籍贯" DataField="address" /> <asp:TemplateField Visible="false"> <HeaderTemplate>操作</HeaderTemplate> <ItemTemplate> <asp:LinkButton runat="server" ID="l1" Text="单击" CommandArgument='<%#Eval("id")%>' OnCommand="command_del"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div> </form> </body> </html>
后台代码如下
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { onload(); } } protected void onload() { GridView1.DataSource = new T().Get(); GridView1.DataBind(); } protected void command_del(object o, CommandEventArgs e) { string id = e.CommandArgument.ToString(); MessageBox.show(this, "您单击了ID=" + id + "的这条数据"); setColors(id); } protected override void Render(HtmlTextWriter writer) { foreach (GridViewRow row in GridView1.Rows) { if (row.RowType == DataControlRowType.DataRow) { int rowIndex = row.RowIndex; string id = row.Cells[0].Text; string onclick= String.Format("javascript:setTimeout(\"if(dbl_click){{dbl_click=false;}}else{{{0}}};\", 1000*0.3);", "__doPostBack('GridView1$ctl" + (rowIndex + 2).ToString().PadLeft(2,'0') + "$l1','')"); row.Attributes["onclick"] =onclick; // 双击,设置 dbl_click=true,以取消单击响应 string ondblclick = String.Format("javascript:dbl_click=true;alert('您双击了ID={0}的这条数据');", id); row.Attributes["ondblclick"] = ondblclick; row.Attributes["style"] = "cursor:pointer"; } } base.Render(writer); } protected void setColors(string id) { string ids = ""; for (int i = 0; i < GridView1.Rows.Count; i++) { GridView1.Rows[i].BackColor = System.Drawing.Color.White; ids = GridView1.Rows[i].Cells[0].Text; if (ids == id) { GridView1.Rows[i].BackColor = System.Drawing.Color.FromName("#D6F1F8"); } } }
目前实现的是 行单击 走后台事件 双击 执行js脚本 可以根据需求自行修改