使用 ASP+ DataGrid 控件来创建主视图/详细资料视图4
点击次数:18 次 发布日期:2008-11-26 11:12:31 作者:源代码网
|
源代码网推荐 源代码网推荐 另外,该页面为 DataGrid 控件的 ItemCreated 事件实施了一个事件处理器。 ItemCreated 事件是 DataGrid 为其高级用途提供的扩展机制之一。该事件允许从行的控件结构内部添加和删除控件,以及在特殊情况下将其添加到特定行。 源代码网推荐 源代码网推荐 DataGrid 每次创建一个项目(或行)时,就引发该事件。这具体有两种情况: 源代码网推荐 源代码网推荐 * 要对控件进行数据绑定,且项目需要从头创建,则在将项目进行数据绑定之前,引发该事件。 源代码网推荐 源代码网推荐 * 当要从往返过程中的保存状态创建项目时,则在将所保存的状态载入项目及其包含的控件之前引发该事件。 源代码网推荐 源代码网推荐 结果是,该事件提供一个挂钩,用于对项目的现有控件结构进行更改。 源代码网推荐 源代码网推荐 在本例中,处理器修改控件的标尾,以显示所列书名的的一个计数。标尾所包含的列的数目与其它行一样。摘要需要横跨整个 DataGrid。因此,处理器仅保留行中的一个单元格,将其余全部删除,并将仅剩的单元格的 ColumnSpan 重置,以使其横跨整个列集,设定其 HorizontalAlign 属性,以使文字右对齐,最后设定其 Text,指示计数。 源代码网推荐 源代码网推荐 处理该事件时,只有一条规则需要遵守:您必须进行同样的结构转换,无论调用该项目的上下文如何,无论是在数据绑定过程中,还是在往返过程中。 源代码网推荐 源代码网推荐 源代码网推荐 第 3 步: 单页面中的主/详细资料视图 源代码网推荐 源代码网推荐 创建主/详细资料视图的另一备选且更常用的方法就是用单页面显示这些视图。 源代码网推荐 源代码网推荐 图 4. 完成第 3 步后的页面 源代码网推荐 源代码网推荐 Authors DataGrid 来自: 源代码网推荐 源代码网推荐 Step3.aspx: 源代码网推荐 源代码网推荐 <asp:DataGrid id="authorsGrid" runat="server" 源代码网推荐 ... 源代码网推荐 DataKeyField="au_id" 源代码网推荐 OnSelectedIndexChanged="OnSelIndexChangedAuthorsGrid"> 源代码网推荐 源代码网推荐 <property name="Columns"> 源代码网推荐 <asp:ButtonColumn Text="Select" Command="Select"/> 源代码网推荐 ... 源代码网推荐 </property> 源代码网推荐 源代码网推荐 ... 源代码网推荐 源代码网推荐 <property name="SelectedItemStyle"> 源代码网推荐 <asp:TableItemStyle BackColor="PaleGoldenRod" Font-Bold="true"/> 源代码网推荐 </property> 源代码网推荐 </asp:DataGrid> 源代码网推荐 源代码网推荐 与前一步相比,该声明中有三处变化。 源代码网推荐 源代码网推荐 首先,在第 2 步中添加的 HyperLinkColumn 已被删除。这不再需要,因为整个视图是在单页面中实施的。 源代码网推荐 源代码网推荐 其次,向列集添加了一个新的列类型 ButtonColumn。该列在每行中生成 LinkButton,用于提交该页,而不是从该页进行浏览。列的 Command 属性设定为 Select,对相应的 LinkButton 属性进行设定。 DataGrid 将 Select 作为一个标准命令,将包含被单击按钮的列选定。 源代码网推荐 源代码网推荐 当选定内容发生变化时, DataGrid 就引发 SelectedIndexChanged 事件,该事件在代码中得到处理。 DataKeyField 属性页得到设定,从而导致 DataKeys 集合填置与数据源中的每个项目相对应的值。 源代码网推荐 源代码网推荐 该页面还包含针对题为 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]; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
