ASP.NET DEMO 15: 同时支持行单击和双击事件的 GridView/DataGr

时间:2010-03-03 12:20:17  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读: 常见处理行方式会选择在 RowDataBound/ItemDataBound 中处理,这里我选择 Page.Render 中处理,至少基于以下考虑   RowDataBound 仅仅在调用 DataBind 之后才会触发,回发通过 ViewState 创建空件不触发 假如需要更多的处理,你需要分开部分逻辑到 RowCreated 等事件中   并且我们希望使用 ClientScript.GetPostBackEventReference 和 ClientScrip...
  正文:功能:
  单击行弹出当前行详细页面
  双击行进入编辑状态(GridView/DataGrid内置 Edit)
  说明:
  单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间
  常见处理行方式会选择在 RowDataBound/ItemDataBound 中处理,这里我选择 Page.Render 中处理,至少基于以下考虑
  RowDataBound 仅仅在调用 DataBind 之后才会触发,回发通过 ViewState 创建空件不触发 假如需要更多的处理,你需要分开部分逻辑到 RowCreated 等事件中
  并且我们希望使用 ClientScript.GetPostBackEventReference 和 ClientScript.RegisterForEventValidation 方法 进行安全脚本的注册,而后者需要在页的 Render 阶段中才能处理
  关于“DataGrid中采取的辅助按钮支持回发”见ASP/ target=_blank class=infotextkey>asp.NET DEMO8: 为 GridView 每行添加服务器事件
  photoshop/ target=_blank class=infotextkey>ps:未实现 Edit 对应的 Update/Cancel ,根据需要自行添加即可。
  
  原始需求:既有单击又有双击的GridView是否存在(问了许多人都说不能,郁闷)
  
  
  可直接运行源码(单页 .aspx):
  
  <%@ Page Language="C#" %>
  <%@ Import Namespace="System.Data" %>
  
  <%--http://community.csdn.net/Expert/TopicView3.asp?id=5767096--%>
  
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  
  <script runat="server">
  
   protected void Page_Load(object sender, EventArgs e)
   {
   if (!IsPostBack) {
   LoadGridViewProductData();
   LoadDataGridProductData();
   }
   }
  
   protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
   {
   /**//*
   当然可以在这里进行客户端脚本绑定,
   但是,我选择在重载页的 Render 方法中处理,因为
   1. RowDataBound 仅仅在调用 DataBind 之后才会触发,回发通过 ViewState 创建空件不触发
   假如需要更多的处理,你需要分开部分逻辑到 RowCreated 等事件中
   2. 并且我们希望使用
   ClientScript.GetPostBackEventReference 和 ClientScript.RegisterForEventValidation 方法
   进行安全脚本的注册,而后者需要在页的 Render 阶段中才能处理
   */
   }
  
   protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
   {
   // 隐藏辅助按钮列
   int cellIndex = 0;
   e.Item.Cells[cellIndex].Attributes["style"] = "display:none";
   }
  
   void LoadGridViewProductData()
   {
   DataTable dt = CreateSampleProductData();
  
   GridView1.DataSource = dt;
   GridView1.DataBind();
   }
  
   void LoadDataGridProductData()
   {
   DataTable dt = CreateSampleProductData();
  
   DataGrid1.DataSource = dt;
   DataGrid1.DataBind();
   }
  
   sample data#region sample data
  
   static DataTable CreateSampleProductData()
   {
   DataTable tbl = new DataTable("Products");
  
   tbl.Columns.Add("ProductID", typeof(int));
   tbl.Columns.Add("ProductName", typeof(string));
   tbl.Columns.Add("UnitPrice", typeof(decimal));
   tbl.Columns.Add("CategoryID", typeof(int)); 《ASP.NET DEMO 15: 同时支持行单击和双击事件的 GridView/DataGr》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13014.html

 1/4    1 2 3 4 下一页 尾页


关键字:

关于《ASP.NET DEMO 15: 同时支持行单击和双击事件的 GridView/DataGr》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td