首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>ASP.NET>实例讲解GridView/DataGri同时支持行单击和双击事件
实例讲解GridView/DataGri同时支持行单击和双击事件
来源: 发布时间:2008-08-28 发布人: 浏览: 人次   字体: [ ]  

  // DataGrid
  foreach (DataGridItem item in DataGrid1.Items) {
    if (item.ItemType == ListItemType.EditItem) {
      item.Attributes.Remove("onclick");
      item.Attributes.Remove("ondblclick");
      item.Attributes.Remove("style");
      item.Attributes["title"] = "编辑行";
      continue;
    }
    if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem) {
      //单击事件,为了响应双击事件,延迟 1 s,根据需要可能需要增加延迟
      item.Attributes["onclick"] =
String.Format("javascript:setTimeout(\"window.open('DummyProductDetail.aspx?productid={0}')\
", 1000*1);event.cancelBubble=true;", DataGrid1.DataKeys[item.ItemIndex].ToString());
      // 双击
      // 获取辅助的支持回发按钮
      // 相对而言, GridView 支持直接将 CommandName 作为 <<EventArgument>> 故不需要辅助按钮
      Button btnHiddenPostButton = item.FindControl("btnHiddenPostButton") as Button;
      // 获取ASP.NET内置回发脚本函数,返回 __doPostBack(<<EventTarget>>, <<EventArgument>>)
      // 可直接硬编码写入脚本,不推荐
      item.Attributes["ondblclick"] = ClientScript.GetPostBackEventReference(btnHiddenPostButton, "");
      //
      item.Attributes["style"] = "cursor:pointer";
      item.Attributes["title"] = "单击打开详细页面、双击进入编辑";
    }
  }

  base.Render(writer);
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>ASP.NET DEMO15: GridView 行单击与双击事件</title>
</head>
<body>
<form id="form1" runat="server">
<div>    
  <h3>功能:</h3>
    <li>单击弹出当前详细页面</li>
    <li>双击进入编辑状态(GridView/DataGrid内置 Edit)</li>    
  <h3>说明:</h3>
    <li>单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间</li>
    <li>常见处理行方式会选择在 RowDataBound/ItemDataBound 中处理,这里我选择Page.Render 中处理,至少基于以下考虑
      <li style="padding-left:20px; list-style-type:square">RowDataBound 仅仅在调用 DataBind 之后才会触发,回发通过 ViewState 创建空件不触发
    假如需要更多的处理,你需要分开部分逻辑到 RowCreated 等事件中</li>
      <li style="padding-left:20px; list-style-type:square">并且我们希望使用ClientScript.GetPostBackEventReference 和 ClientScript.RegisterForEventValidation 方法  进行安全脚本的注册,而后者需要在页的 Render 阶段中才能处理</li>
    </li>
    <li>关于“DataGrid中采取的辅助按钮支持回发”见为GridView 每行添加服务器事件 
  <br />
  <input type="button" id="Button1" value="Rebind"
onclick="location\\.href\\=location\\.href\\;" />
  <div style="float:left">
  <h3>GridView Version</h3>
  <asp:GridView ID="GridView1" DataKeyNames="ProductID" runat="server" AutoGenerateColumns="False" OnRowEditing="GridView1_RowEditing"
OnRowDataBound="GridView1_RowDataBound">
    <Columns>              
      <asp:TemplateField HeaderText="ProductName" >
        <ItemTemplate>
          <%# Eval("ProductName") %>
        </ItemTemplate>
        <EditItemTemplate>
          <asp:TextBox ID="txtProductName" runat="server" Text='<%# Bind("ProductName") %>' />
        </EditItemTemplate>
      </asp:TemplateField>
      <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" />
     
    </Columns>
  </asp:GridView></div>
  <div style="float:left;padding-left:100px;">
  <h3>DataGrid Version</h3>
 <asp:DataGrid ID="DataGrid1" DataKeyField="ProductID" runat="server" AutoGenerateColumns="False" OnEditCommand="DataGrid1_EditCommand"
OnItemDataBound="DataGrid1_ItemDataBound">
    <Columns>
      <asp:TemplateColumn>
        <ItemTemplate>
          <asp:Button ID="btnHiddenPostButton" CommandName="Edit"
runat="server" Text="HiddenPostButton" style="display:none" />
        </ItemTemplate>
      </asp:TemplateColumn>    
      <asp:BoundColumn DataField="ProductName" HeaderText="ProductName" />
      <asp:BoundColumn DataField="UnitPrice" HeaderText="UnitPrice" />
    </Columns>
  </asp:DataGrid></div>
  </li>
  </div>
</form>
</body>
</html>
注:未实现 Edit 对应的 Update/Cancel ,根据需要自行添加即可
本文实例代码下载:点击此次下载


共2页: 上一页 [1] 2 下一页
相 关 文 章   发布商链接
·Asp.net实现加密和解密的运算代码实...
·Asp.net+AJAX实现的省市县无刷新级联...
·实例讲解asp.net一次预览并上传多张...
·asp.net中页面Div层内部的控件在垂直...
·解决B/S系统开发中Activex控件需要激...
·asp.net如何自定义配置文件的探讨
·如何在asp.net刷新页面时不提示 "重...
·如何在asp.net中使用javascript获取s...
·asp.net动态生成txt文件并提供用户下...
·如何给FCKeditor编辑器进行精简操作
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·实例讲解ASP.NET实现加密Cook...
·如何实现在DataList控件中的D...
·实例讲解asp.net生成高质量缩
·asp.net适用于IE或FireFox的...
·举例详解C#代码与javaScript...
·asp.net无刷新上传文件
·在Ie中保存图片时出现"800700...
·asp.net文件上传大小限制的控
·asp.net动态生成txt文本文件...
·asp.net实现将Excel文件导入...
·实现多列,带图片的DropDownLi...
·javascript实现TreeView 控件
·ASP.NET配置Word的操作权限
·让FileUpload控件在IE和FireF...
·ASP.NET实现Office文档的分类
热 门 文 章
·asp.net(C#)上传下载及文件管...
·图解asp.net如何用excel做报...
·asp.net无刷新上传文件
·Asp.Net防止刷新重复提交数据...
·asp.net实现将Excel文件导入...
·ASP.NET取得物理路径和虚拟路...
·asp.net中Web.Config配置文件...
·asp.net(c#)生成验证码代码,...
·asp.net页面回传与js调用服务...
·asp.net中DataBinder.Eval的...
·asp.net(C#版)实现登录验证码...
·DataGrid中DropDownList触发S...
·asp.net可输入的下拉框复合控...
·ASP.net 实现批量数据更新或...
·asp.net中常见的几种日历控件...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .