linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > asp.net >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·NetBPM工作流的一个示例:请假
·Office Web Components(OWC)绘
·asp.net正则表达式语法
·asp.net 2.0 ajax中使用PopupC
·Ado.Net读取Excel常见问题总结
·数据源为空时如何让GridView显
·如何让UpdatePanel支持文件上传
·C#.Net的常见面试试题和参考答
·asp.net ajax客户端编程+jquer
·Brettle.Web.NeatUpload.dll支
·ASP.NET使用Cookie
·ASP.NET DEMO 15: 同时支持行单
·如何使IE的后退按钮无效
·如何在ASP.NET中用OWC绘制图表
·asp.net:正确判断当前用户角色
最新文章
·Ajax Control Toolkit Animati
·讨论一下类似BlogEngine内一次
·使用CSS+SiteMap+UserControl+
·Asp.net中多彩下拉框的实现
·浅谈ASP.NET的Postback
·分清ASP.NET AJAX中的Extender
·Tip:在使用AjaxControlTookit
·有关注册DataItem的一些可能被
·IIRF(Ionic's Isapi Rewrite
·asp.net 客户端回调功能的实现
·关于控件部分的看法--读Progra
·为什么在vista上做开发
·如何封装JS和CSS文件为服务器端
·岂今我看过的最强的排序算法
·设计模式学习笔记之单件模式
Google
 
使用 ASP+ DataGrid 控件来创建主视图/详细资料视图
[ 作者:  加入时间:2007-11-27 17:20:49  来自:Linux联盟收集整理 ]
Step6Page.cs: ktdLinux联盟
   ktdLinux联盟
  namespace Samples { ktdLinux联盟
   ... ktdLinux联盟
   ktdLinux联盟
   public class Step6Page : Page { ktdLinux联盟
   ktdLinux联盟
   // 更新当前选定的作者并重新加载与选定内容对应的书名 ktdLinux联盟
   // 网格 ktdLinux联盟
   protected void LoadTitlesGrid() { ktdLinux联盟
   UpdateSelection(); ktdLinux联盟
   titlesGrid.DataBind(); ktdLinux联盟
   } ktdLinux联盟
   ktdLinux联盟
   // 处理书名网格中的 CancelCommand 事件,以 ktdLinux联盟
   // 不施用更改就结束编辑 ktdLinux联盟
   protected void OnCancelCommandTitlesGrid(object sender, ktdLinux联盟
   DataGridCommandEventArgs e) { ktdLinux联盟
   titlesGrid.EditItemIndex = -1; ktdLinux联盟
   LoadTitlesGrid(); ktdLinux联盟
   } ktdLinux联盟
   ktdLinux联盟
   // 处理书名网格中的 EditCommand 事件,以 ktdLinux联盟
   // 开始编辑某一行 ktdLinux联盟
   protected void OnEditCommandTitlesGrid(object sender, ktdLinux联盟
   DataGridCommandEventArgs e) { ktdLinux联盟
   titlesGrid.EditItemIndex = e.Item.ItemIndex; ktdLinux联盟
   LoadTitlesGrid(); ktdLinux联盟
   } ktdLinux联盟
   ktdLinux联盟
   // 处理书名网格中的 UpdateCommand 事件,以施用 ktdLinux联盟
   // 所作的更改并结束编辑 ktdLinux联盟
   protected void OnUpdateCommandTitlesGrid(object sender, ktdLinux联盟
   DataGridCommandEventArgs e) { ktdLinux联盟
   TextBox priceText = ktdLinux联盟
   (TextBox)e.Item.FindControl("Column3Control"); ktdLinux联盟
   string newPrice = priceText.Text.Substring(1); ktdLinux联盟
   ktdLinux联盟
   DataSet ds = GetSessionData(); ktdLinux联盟
   DataTable titlesTable = ds.Tables["Title"]; ktdLinux联盟
   ktdLinux联盟
   string titleID = ktdLinux联盟
   (string)titlesGrid.DataKeys[e.Item.ItemIndex]; ktdLinux联盟
   DataRow[] rows = titlesTable.Select("title_id = '" + ktdLinux联盟
   titleID + "'"); ktdLinux联盟
   DataRow editRow = rows[0]; ktdLinux联盟
   ktdLinux联盟
   editRow.BeginEdit(); ktdLinux联盟
   editRow["price"] = newPrice; ktdLinux联盟
   editRow.EndEdit(); ktdLinux联盟
   editRow.AcceptChanges(); ktdLinux联盟
   titlesGrid.EditItemIndex = -1; ktdLinux联盟
   LoadTitlesGrid(); ktdLinux联盟
   } ktdLinux联盟
   } ktdLinux联盟
  } ktdLinux联盟
   ktdLinux联盟
  EditCommand 事件是在单击 Edit 按钮时引发的。只需将 DataGrid 的 EditItemIndex 属性设定为包含被单击按钮的项目的索引的属性。要防止编辑某一个别行,不采取任何动作就返回。另外,要继续进行编辑,就必须重新加载数据源并调用 DataBind。这通过调用 LoadTitlesGrid 方法来完成。 ktdLinux联盟
   ktdLinux联盟
  您必须处理的第二个事件就是 CancelCommand 事件。这是单击 Cancel 按钮时引发的。实施十分类似于前一处理器。如想结束编辑,则只需将 EditItemIndex 属性重置为 ?,并重新加载数据源。如果需要维持行的编辑模式,则仅需不采取任何动作就从函数返回即可。 ktdLinux联盟
   ktdLinux联盟
  要处理的最后一个事件就是 UpdateCommand 事件,这是单击 Update 按钮时引发的。这里是实际工作发生的地方。从存在于项目中的控件抽取新的值,然后更新数据源。一旦将新的值使用完毕,就将 EditItemIndex 重置为 ?,以返回到只读模式,并连同其数据源一起重新加载控件。对于前两个事件,您可以不采取任何动作就从该函数返回,以保持该行的编辑模式状态。 ktdLinux联盟
   ktdLinux联盟
  这一步又再次举例说明控件中实施的显式数据绑定模型。在这一实施情形中,只在某行的状态从只读模式更改为编辑模式或相反时才需要数据源。注意, DataGrid 自身并不更新其数据源。实质上,数据绑定是单向的。采用本模型的目的在于让您拥有对数据源更新的控制。在大多数典型的应用程序中,更新需要预处理,并且是由业务对象或已存储的过程来调用的。另外,单向数据绑定并不要求每个时间都有实时的数据源。 ktdLinux联盟
   ktdLinux联盟
   ktdLinux联盟
  第 7 步: 使用模板 ktdLinux联盟
   ktdLinux联盟
  DataGrid 控件通过使用 TemplateColumns,支持列内模板。可以完全自由地决定与这些列相关联的单元格的内容。这一步使用 TemplateColumn 来增强首先在前一步中实施的编辑支持。 ktdLinux联盟
   ktdLinux联盟
  图 8. 完成第 7 步后的页面 ktdLinux联盟
   ktdLinux联盟
  Titles DataGrid 来自: ktdLinux联盟
   ktdLinux联盟
  Step7.aspx: ktdLinux联盟
   ktdLinux联盟
  <asp:DataGrid id="titlesGrid" runat="server" ktdLinux联盟
   ...> ktdLinux联盟
   ktdLinux联盟
   <property name="Columns"> ktdLinux联盟
   ... ktdLinux联盟
   <asp:TemplateColumn HeaderText="Price"> ktdLinux联盟
   <template name="ItemTemplate"> ktdLinux联盟
   <asp:Label runat="server" ktdLinux联盟
   Text='<%# DataBinder.Eval(Container.DataItem, "price", ktdLinux联盟
   "{0:c}") %>'/> ktdLinux联盟
   </template> ktdLinux联盟
   ktdLinux联盟
   <template name="EditItemTemplate"> ktdLinux联盟
   <asp:RequiredFieldValidator runat="server" ktdLinux联盟
   ControlToValidate="priceText" Display="Dynamic"> ktdLinux联盟
   <img src="Error.gif" height="16" width="16" title="Required" ktdLinux联盟
   align="absmiddle"> ktdLinux联盟
   </asp:RequiredFieldValidator> ktdLinux联盟
   <asp:RegularExpressionValidator runat="server" ktdLinux联盟
   ControlToValidate="priceText" Display="Dynamic" ktdLinux联盟
   ValidationExpression="\$[0-9]+(\.[0-9][0-9]?)?"> ktdLinux联盟
   <img src="Error.gif" height="16" width="16" ktdLinux联盟
   title="Invalid currency value" ktdLinux联盟
   align="absmiddle"> ktdLinux联盟
   </asp:RegularExpressionValidator> ktdLinux联盟
   <asp:TextBox id="priceText" runat="server" ktdLinux联盟
   Text='<%# DataBinder.Eval(Container.DataItem, "price", ktdLinux联盟
   "{0:c}") %>' ktdLinux联盟
   Width="45px" BorderStyle="Solid" BorderWidth="1px" ktdLinux联盟
   BorderColor="Black"> ktdLinux联盟
   </asp:TextBox> ktdLinux联盟
   </template> ktdLinux联盟
   ktdLinux联盟
   <property name="HeaderStyle"> ktdLinux联盟
   <asp:TableItemStyle Width="50px"/> ktdLinux联盟
   </property> ktdLinux联盟
   <property name="ItemStyle"> ktdLinux联盟
   <asp:TableItemStyle HorizontalAlign="Right"/> ktdLinux联盟
   </property> ktdLinux联盟
   </asp:TemplateColumn> ktdLinux联盟
   </property> ktdLinux联盟
   ... ktdLinux联盟
  </asp:DataGrid> ktdLinux联盟
   ktdLinux联盟
  控件的声明展示将 TemplateColumn 添加到 Columns 集合,以替代价格字段的 BoundColumn。 TemplateColumns 是 DataGrid 的另一扩展机制。可以将其用于对 DataGrid 所创建的表格式布局内所表现的 UI 进行完全定制。 TemplateColumn 还提供模板属性,比如 ItemTemplate 和 EditItemTemplate,从而您可以指定应当用于与列相关联的单元格内的控件。 ktdLinux联盟
   ktdLinux联盟
  在本例中, ItemTemplate 包含一个 Label 控件,其 Text 属性绑定到价格字段。这实质上在模仿 BoundColumn 的功能。 ktdLinux联盟
   ktdLinux联盟
  有意思的是, EditItemTemplate 模板用于处于编辑模式中的单元格。样例将一个 TextBox 放入已绑定到价格字段的模板中。这样就提供了与 BoundColumn 相同的功能。 ktdLinux联盟
   ktdLinux联盟
  模板包含各种各样的增强性能。首先,该模板允许对 TextBox 进行更大的控制,从而您可以创建在视觉上更有魅力的编辑 UI。其次,允许您放置验证控件,从而可以进行原地验证。在本样例中, RequiredFieldValidator 确保 TextBox 总是包含一个值,而 RegularExpressionValidator 确保文本包含一个有效的货币值。该功能的最令人兴奋的一个方面就是自动进行客户机端验证。 ASP+ 验证控件自动进行客户机端验证,并开启功能丰富的浏览器客户机上的错误指示器,从而无须往返过程和回落到为下级客户机进行服务器端验证。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息