使用 ASP+ DataGrid 控件来创建主视图/详细资料视图__教程 |
|
日期:2007-5-20 1:22:40 人气:159 [大 中 小] |
|
|
|
该页面还包含针对题为 detailsPanel 的面板内的详细资料节的 UI 和布局。这是从第 2 步原样复制的。
Step3Page.cs 表示这一步中的 .aspx 页面的支持代码。其中包括来自第 2 步中两个有代码支持的文件的代码组合。来自详细资料页面的大部分代码均为原样照搬。下面显示的代码包含我们所作的更改和补充。
Step3Page.cs:
namespace Samples { ...
public class Step3Page : Page { private object currentAuthor;
// 将 Authors 表载入 DataGrid // 另外还更新选定的作者 private void LoadAuthorsGrid() { ICollection authors = GetAuthors();
authorsGrid.DataSource = authors; if (authors.Count != 0) { authorsGrid.SelectedIndex = 0; } else { authorsGrid.SelectedIndex = -1; }
authorsGrid.DataBind(); UpdateDetails(); }
// 处理作者网格中的 SelectedIndexChanged 事件,以 // 更新详细资料 protected void OnSelIndexChangedAuthorsGrid(object sender, EventArgs e) { UpdateDetails(); }
// 根据当前选定的作者来更新 // 详细资料节 private void UpdateDetails() { UpdateSelection();
if (currentAuthor != null) { detailsPanel.Visible = true; detailsPanel.DataBind(); } else { detailsPanel.Visible = false; } }
// 更新当前选定的作者 private void UpdateSelection() { int selectedIndex = authorsGrid.SelectedIndex;
currentAuthor = null; if (selectedIndex != -1) { string authorID = (string)authorsGrid.DataKeys[selectedIndex];
DataSet ds = GetSessionData(); DataView dv = ds.Tables["Author"].DefaultView;
dv.RowFilter = "au_id = '" + authorID + "'"; currentAuthor = dv[0]; } } } }
每次加载 Authors DataGrid 时,就初始化其 SelectedIndex 属性。一旦得到绑定,即其 DataKeys 集合填置完毕,就通过调用 UpdateDetails,更新详细资料节。
针对 SelectedIndexChanged 事件的处理器中的详细资料节也得到更新。注意,此时已借助 DataBind 未被调用以来的保存状态将 DataKeys 集合填置完毕。
UpdateDetails 方法首先调用 UpdateSelection。 UpdateSelection 使用 Authors DataGrid 的 SelectedIndex 和 DataKeys 属性来确定选定作者的 ID 和初始化 CurrentAuthor 属性。然后, UpdateDetails 调用 detailsPanel 控件上的 DataBind,对访问 CurrentAuthor 的数据绑定表达式进行求值。
除了借助 SelectedIndexChanged 事件进行选择跟踪,还可以从本样例实现另一关键概念。注意,改变选择内容并不需要已将 Authors DataGrid 进行过数据绑定。因此,从不需要重新加载 Authors 列表,从而极大地减少了对 Authors 表的访问。这是 ASP+ 中所实施的显式数据绑定模型的一个关键益处。
--------------------------------------------------------------------------------
第 4 步: 排序
DataGrid 支持生成可点击标头的功能,此类标头可以用于让最终用户对控件中所展示的数据进行排序。这一步添加了对 Authors 列表进行排序的功能。
图 5. 完成第 4 步后页面的屏幕快照
Authors DataGrid 来自:
Step4.aspx
<asp:DataGrid id="authorsGrid" runat="server" ... AllowSorting="true" OnSortCommand="OnSortCommandAuthorsGrid" OnItemCreated="OnItemCreatedAuthorsGrid">
<property name="Columns"> <asp:ButtonColumn Text="Select" Command="Select"/> <asp:BoundColumn HeaderText="ID" DataField="au_id"> <property name="HeaderStyle"> <asp:TableItemStyle Width="100px"/> </property> </asp:BoundColumn> <asp:BoundColumn HeaderText="Name" DataField="au_name" SortField="au_name"> |
|
出处:本站原创 作者:佚名 |
|
|