当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 1

 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 1

点击次数:18 次 发布日期:2008-11-26 11:11:08 作者:源代码网
源代码网推荐      Step6Page.cs:
源代码网推荐  
源代码网推荐  namespace Samples {
源代码网推荐   ...
源代码网推荐  
源代码网推荐   public class Step6Page : Page {
源代码网推荐  
源代码网推荐   // 更新当前选定的作者并重新加载与选定内容对应的书名
源代码网推荐   // 网格
源代码网推荐   protected void LoadTitlesGrid() {
源代码网推荐   UpdateSelection();
源代码网推荐   titlesGrid.DataBind();
源代码网推荐   }
源代码网推荐  
源代码网推荐   // 处理书名网格中的 CancelCommand 事件,以
源代码网推荐   // 不施用更改就结束编辑
源代码网推荐   protected void OnCancelCommandTitlesGrid(object sender,
源代码网推荐   DataGridCommandEventArgs e) {
源代码网推荐   titlesGrid.EditItemIndex = -1;
源代码网推荐   LoadTitlesGrid();
源代码网推荐   }
源代码网推荐  
源代码网推荐   // 处理书名网格中的 EditCommand 事件,以
源代码网推荐   // 开始编辑某一行
源代码网推荐   protected void OnEditCommandTitlesGrid(object sender,
源代码网推荐   DataGridCommandEventArgs e) {
源代码网推荐   titlesGrid.EditItemIndex = e.Item.ItemIndex;
源代码网推荐   LoadTitlesGrid();
源代码网推荐   }
源代码网推荐  
源代码网推荐   // 处理书名网格中的 UpdateCommand 事件,以施用
源代码网推荐   // 所作的更改并结束编辑
源代码网推荐   protected void OnUpdateCommandTitlesGrid(object sender,
源代码网推荐   DataGridCommandEventArgs e) {
源代码网推荐   TextBox priceText =
源代码网推荐   (TextBox)e.Item.FindControl("Column3Control");
源代码网推荐   string newPrice = priceText.Text.Substring(1);
源代码网推荐  
源代码网推荐   DataSet ds = GetSessionData();
源代码网推荐   DataTable titlesTable = ds.Tables["Title"];
源代码网推荐  
源代码网推荐   string titleID =
源代码网推荐   (string)titlesGrid.DataKeys[e.Item.ItemIndex];
源代码网推荐   DataRow[] rows = titlesTable.Select("title_id = "" +
源代码网推荐   titleID + """);
源代码网推荐   DataRow editRow = rows[0];
源代码网推荐  
源代码网推荐   editRow.BeginEdit();
源代码网推荐   editRow["price"] = newPrice;
源代码网推荐   editRow.EndEdit();
源代码网推荐   editRow.AcceptChanges();
源代码网推荐   titlesGrid.EditItemIndex = -1;
源代码网推荐   LoadTitlesGrid();
源代码网推荐   }
源代码网推荐   }
源代码网推荐  }
源代码网推荐  
源代码网推荐  EditCommand 事件是在单击 Edit 按钮时引发的。只需将 DataGrid 的 EditItemIndex 属性设定为包含被单击按钮的项目的索引的属性。要防止编辑某一个别行,不采取任何动作就返回。另外,要继续进行编辑,就必须重新加载数据源并调用 DataBind。这通过调用 LoadTitlesGrid 方法来完成。
源代码网推荐  
源代码网推荐  您必须处理的第二个事件就是 CancelCommand 事件。这是单击 Cancel 按钮时引发的。实施十分类似于前一处理器。如想结束编辑,则只需将 EditItemIndex 属性重置为 ?,并重新加载数据源。如果需要维持行的编辑模式,则仅需不采取任何动作就从函数返回即可。
源代码网推荐  
源代码网推荐  要处理的最后一个事件就是 UpdateCommand 事件,这是单击 Update 按钮时引发的。这里是实际工作发生的地方。从存在于项目中的控件抽取新的值,然后更新数据源。一旦将新的值使用完毕,就将 EditItemIndex 重置为 ?,以返回到只读模式,并连同其数据源一起重新加载控件。对于前两个事件,您可以不采取任何动作就从该函数返回,以保持该行的编辑模式状态。
源代码网推荐  
源代码网推荐  这一步又再次举例说明控件中实施的显式数据绑定模型。在这一实施情形中,只在某行的状态从只读模式更改为编辑模式或相反时才需要数据源。注意, DataGrid 自身并不更新其数据源。实质上,数据绑定是单向的。采用本模型的目的在于让您拥有对数据源更新的控制。在大多数典型的应用程序中,更新需要预处理,并且是由业务对象或已存储的过程来调用的。另外,单向数据绑定并不要求每个时间都有实时的数据源。
源代码网推荐  
源代码网推荐  
源代码网推荐  第 7 步: 使用模板
源代码网推荐  
源代码网推荐  DataGrid 控件通过使用 TemplateColumns,支持列内模板。可以完全自由地决定与这些列相关联的单元格的内容。这一步使用 TemplateColumn 来增强首先在前一步中实施的编辑支持。
源代码网推荐  
源代码网推荐  图 8. 完成第 7 步后的页面
源代码网推荐  
源代码网推荐  Titles DataGrid 来自:
源代码网推荐  
源代码网推荐  Step7.aspx:
源代码网推荐  
源代码网推荐  <asp:DataGrid id="titlesGrid" runat="server"
源代码网推荐   ...>
源代码网推荐  
源代码网推荐   <property name="Columns">
源代码网推荐   ...
源代码网推荐   <asp:TemplateColumn HeaderText="Price">
源代码网推荐   <template name="ItemTemplate">
源代码网推荐   <asp:Label runat="server"
源代码网推荐   Text="<%# DataBinder.Eval(Container.DataItem, "price",
源代码网推荐   "{0:c}") %>"/>
源代码网推荐   </template>
源代码网推荐  
源代码网推荐   <template name="EditItemTemplate">
源代码网推荐   <asp:RequiredFieldValidator runat="server"
源代码网推荐   ControlToValidate="priceText" Display="Dynamic">
源代码网推荐   <img src="http://www.zzchn.com/edu/20080727/Error.gif" height="16" width="16" title="Required"
源代码网推荐   align="absmiddle">
源代码网推荐   </asp:RequiredFieldValidator>
源代码网推荐   <asp:RegularExpressionValidator runat="server"
源代码网推荐   ControlToValidate="priceText" Display="Dynamic"
源代码网推荐   ValidationExpression="$[0-9]+(.[0-9][0-9]?)?">
源代码网推荐   <img src="http://www.zzchn.com/edu/20080727/Error.gif" height="16" width="16"
源代码网推荐   title="Invalid currency value"
源代码网推荐   align="absmiddle">
源代码网推荐   </asp:RegularExpressionValidator>
源代码网推荐   <asp:TextBox id="priceText" runat="server"
源代码网推荐   Text="<%# DataBinder.Eval(Container.DataItem, "price",
源代码网推荐   "{0:c}") %>"
源代码网推荐   Width="45px" BorderStyle="Solid" BorderWidth="1px"
源代码网推荐   BorderColor="Black">
源代码网推荐   </asp:TextBox>
源代码网推荐   </template>
源代码网推荐  
源代码网推荐   <property name="HeaderStyle">
源代码网推荐   <asp:TableItemStyle Width="50px"/>
源代码网推荐   </property>
源代码网推荐   <property name="ItemStyle">
源代码网推荐   <asp:TableItemStyle HorizontalAlign="Right"/>
源代码网推荐   </property>
源代码网推荐   </asp:TemplateColumn>
源代码网推荐   </property>
源代码网推荐   ...
源代码网推荐  </asp:DataGrid>
源代码网推荐  
源代码网推荐  控件的声明展示将 TemplateColumn 添加到 Columns 集合,以替代价格字段的 BoundColumn。 TemplateColumns 是 DataGrid 的另一扩展机制。可以将其用于对 DataGrid 所创建的表格式布局内所表现的 UI 进行完全定制。 TemplateColumn 还提供模板属性,比如 ItemTemplate 和 EditItemTemplate,从而您可以指定应当用于与列相关联的单元格内的控件。
源代码网推荐  
源代码网推荐  在本例中, ItemTemplate 包含一个 Label 控件,其 Text 属性绑定到价格字段。这实质上在模仿 BoundColumn 的功能。
源代码网推荐  
源代码网推荐  有意思的是, EditItemTemplate 模板用于处于编辑模式中的单元格。样例将一个 TextBox 放入已绑定到价格字段的模板中。这样就提供了与 BoundColumn 相同的功能。
源代码网推荐  
源代码网推荐  模板包含各种各样的增强性能。首先,该模板允许对 TextBox 进行更大的控制,从而您可以创建在视觉上更有魅力的编辑 UI。其次,允许您放置验证控件,从而可以进行原地验证。在本样例中, RequiredFieldValidator 确保 TextBox 总是包含一个值,而 RegularExpressionValidator 确保文本包含一个有效的货币值。该功能的最令人兴奋的一个方面就是自动进行客户机端验证。 ASP+ 验证控件自动进行客户机端验证,并开启功能丰富的浏览器客户机上的错误指示器,从而无须往返过程和回落到为下级客户机进行服务器端验证。  做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华