无尽的控件-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脚本 可以根据需求自行修改

 

下载地址

posted @ 2012-04-26 22:47  by_封爱  阅读(1545)  评论(1编辑  收藏  举报