您的位置:首页 > 其它

无尽的控件-GridView行单击与双击

2012-04-26 22:47 351 查看
本次是 无尽的控件-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脚本 可以根据需求自行修改

下载地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: