使用 ASP+ DataGrid 控件来创建主视图/详细资料视图3
点击次数:22 次 发布日期:2008-11-26 11:12:29 作者:源代码网
|
源代码网推荐 源代码网推荐 创建主/详细资料视图的一个方法就是使用多页面。在该方法中,主查询中的选定值的详细资料视图被显示在次要页面上。在关于选定内容的信息中,该次要页面作为 URL 请求中的一个参数得到传递。 源代码网推荐 源代码网推荐 图 3. 第 2 后的页面,展示详细资料页面的浮动视图 源代码网推荐 源代码网推荐 Step2.aspx 包含对 DataGrid 的更改,以使其包含一个名为 DataGrid 声明的列。 源代码网推荐 源代码网推荐 Step2.aspx: 源代码网推荐 源代码网推荐 <asp:DataGrid id="authorsGrid" runat="server" 源代码网推荐 AutoGenerateColumns="false" 源代码网推荐 BackColor="White" 源代码网推荐 BorderWidth="1px" BorderStyle="Solid" BorderColor="Tan" 源代码网推荐 CellPadding="2" CellSpacing="0" 源代码网推荐 Font-Name="Verdana" Font-Size="8pt"> 源代码网推荐 源代码网推荐 <property name="Columns"> 源代码网推荐 <asp:BoundColumn HeaderText="ID" DataField="au_id"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="100px"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 <asp:BoundColumn HeaderText="Name" DataField="au_name"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="150px"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 <asp:BoundColumn HeaderText="State" DataField="state"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="50px"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 <asp:HyperLinkColumn Text="Details" DataNavigateUrlField="au_id" 源代码网推荐 DataNavigateUrlFormatString="Step2a.aspx?AuthorID={0}"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle BackColor="DarkRed" ForeColor="White" 源代码网推荐 Font-Bold="true"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="ItemStyle"> 源代码网推荐 <asp:TableItemStyle ForeColor="DarkSlateBlue"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="AlternatingItemstyle"> 源代码网推荐 <asp:TableItemStyle BackColor="Beige"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 </asp:DataGrid> 源代码网推荐 源代码网推荐 DataGrid 声明与第 1 步中的 DataGrid 声明几乎一样。已将单独一个 HyperLinkColumn 添加到 Columns 集合。 HyperLinkColumn 用来在 DataGrid 的每行中创建一个可导航的链接。该类型的列允许其 Text 和 NavigateUrl 属性与数据绑定。这样, Text 属性是静态的,而 NavigateUrl 是数据绑定到作者 ID 的(通过设定 DataNavigateUrl 属性)。另外,指定 DataNavigateUrlFormatString 建立一个以 Author ID 为参数的指向详细资料页面的 URL。 因此,每行均包含一个带有“详细资料”超级链接的附加列,而该链接的 URL 以与该行关联的数据为依据。 源代码网推荐 源代码网推荐 HyperLinkColumn 代表着向本来只读的数据显示添加交互功能的第一步。 源代码网推荐 源代码网推荐 支持该页面 (Step2Page.cs) 的代码与第 1 步相同。添加这一列并不添加任何代码,也不导致任何代码发生变化,因此此处没有列出那些代码。 源代码网推荐 源代码网推荐 Step2a.aspx 实施详细资料页面,以显示某一具体作者的详细资料。 源代码网推荐 源代码网推荐 Step2a.aspx: 源代码网推荐 源代码网推荐 <asp:Panel id="detailsPanel" runat="server"> 源代码网推荐 <table border="0" cellspacing="0" cellpadding="2" width="100%" 源代码网推荐 style="font-family: verdana; font-size: 8pt"> 源代码网推荐 <tr> 源代码网推荐 <td width="200"><b>Name:</b></td> 源代码网推荐 <td width="100%"> 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "au_name") %> 源代码网推荐 </td> 源代码网推荐 </tr> 源代码网推荐 <tr> 源代码网推荐 <td width="200"><b>ID:</b></td> 源代码网推荐 <td width="100%"> 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "au_id") %> 源代码网推荐 </td> 源代码网推荐 </tr> 源代码网推荐 <tr> 源代码网推荐 <td width="200" valign="top"><b>Address:</b></td> 源代码网推荐 <td width="100%"> 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "address") %><br> 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "city") %>, 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "state") %> 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "zip") %> 源代码网推荐 </td> 源代码网推荐 </tr> 源代码网推荐 <tr> 源代码网推荐 <td width="200"><b>Phone:<b></td> 源代码网推荐 <td width="100%"> 源代码网推荐 <%# DataBinder.Eval(CurrentAuthor, "phone") %> 源代码网推荐 </td> 源代码网推荐 </tr> 源代码网推荐 <tr> 源代码网推荐 <td colspan="2"><b>Title(s) Authored</b></td> 源代码网推荐 </tr> 源代码网推荐 <tr> 源代码网推荐 <td colspan="2"> 源代码网推荐 <asp:DataGrid id="titlesGrid" runat="server" 源代码网推荐 DataSource="<%# DataBinder.Eval(CurrentAuthor, "AuthorTitle") %>" 源代码网推荐 AutoGenerateColumns="false" 源代码网推荐 ShowFooter="true" 源代码网推荐 BackColor="White" 源代码网推荐 BorderWidth="1px" BorderStyle="Solid" BorderColor="Tan" 源代码网推荐 CellPadding="2" CellSpacing="0" 源代码网推荐 Font-Name="Verdana" Font-Size="8pt" 源代码网推荐 OnItemCreated="OnItemCreatedTitlesGrid"> 源代码网推荐 源代码网推荐 <property name="Columns"> 源代码网推荐 <asp:BoundColumn HeaderText="ID" DataField="title_id"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="100px"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 <asp:BoundColumn HeaderText="Title" DataField="title"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="250px"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 <asp:BoundColumn HeaderText="Published" DataField="pubdate" 源代码网推荐 DataFormatString="{0:MMM yyyy}"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="100px"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 <asp:BoundColumn HeaderText="Price" DataField="price" 源代码网推荐 DataFormatString="{0:c}"> 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle Width="50px"/> 源代码网推荐 </property> 源代码网推荐 <property name="ItemStyle"> 源代码网推荐 <asp:TableItemStyle HorizontalAlign="Right"/> 源代码网推荐 </property> 源代码网推荐 </asp:BoundColumn> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="HeaderStyle"> 源代码网推荐 <asp:TableItemStyle BackColor="DarkRed" ForeColor="White" 源代码网推荐 Font-Bold="true"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="FooterStyle"> 源代码网推荐 <asp:TableItemStyle BackColor="Tan"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="ItemStyle"> 源代码网推荐 <asp:TableItemStyle ForeColor="DarkSlateBlue"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 <property name="AlternatingItemstyle"> 源代码网推荐 <asp:TableItemStyle BackColor="Beige"/> 源代码网推荐 </property> 源代码网推荐 源代码网推荐 </asp:DataGrid> 源代码网推荐 </td> 源代码网推荐 </tr> 源代码网推荐 </table> 源代码网推荐 </asp:Panel> 源代码网推荐 源代码网推荐 本页包含若干使用 DataBinder.Eval 的数据绑定表达式。这些表达式抽取本页代码中所实施的 CurrentAuthor 属性的各个属性。 源代码网推荐 源代码网推荐 DataGrid 用于显示选定作者所编著的书名。与第 1 步相同, DataGrid 包含一个针对要显示的列的定义,以及用于为列、行和总体控制提供可视格式化的样式属性设置。 源代码网推荐 源代码网推荐 BoundColumns 还允许对数据进行格式化。正如在上面声明中看到的那样, DataFormatString 属性用于对日期和货币值进行格式化。格式化对于表示本地化文字和控制非字符串类型的文字呈现来讲极其有用。 源代码网推荐 源代码网推荐 Step2aPage.cs 包含支持详细资料页面的代码。 源代码网推荐 源代码网推荐 Step2aPage.cs: 源代码网推荐 源代码网推荐 namespace Samples { 源代码网推荐 ... 源代码网推荐 源代码网推荐 public class Step2aPage : Page { 源代码网推荐 private object currentAuthor; 源代码网推荐 源代码网推荐 // 返回当前选定的 Author 源代码网推荐 public object CurrentAuthor { 源代码网推荐 get { 源代码网推荐 return currentAuthor; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 // 检索存入会话状态的应用程序数据 源代码网推荐 private DataSet GetSessionData() { 源代码网推荐 return (DataSet)Session["AppData"]; 源代码网推荐 } 源代码网推荐 源代码网推荐 // 处理 ItemCreated 事件,以将标尾定制为 源代码网推荐 // 显示总结信息 源代码网推荐 protected void OnItemCreatedTitlesGrid(object sender, 源代码网推荐 DataGridItemCreatedEventArgs e) { 源代码网推荐 if (e.Item.ItemType == ListItemType.Footer) { 源代码网推荐 int cellCount = e.Item.Cells.Count; 源代码网推荐 源代码网推荐 for (int i = 0; i < cellCount - 1; i++) { 源代码网推荐 e.Item.Cells.RemoveAt(0); 源代码网推荐 } 源代码网推荐 源代码网推荐 int itemCount = titlesGrid.Items.Count; 源代码网推荐 string itemCountString; 源代码网推荐 if (itemCount == 0) { 源代码网推荐 itemCountString = "No Titles Found"; 源代码网推荐 } 源代码网推荐 else { 源代码网推荐 itemCountString = Int32.ToString(itemCount) + 源代码网推荐 " title(s)"; 源代码网推荐 } 源代码网推荐 源代码网推荐 TableCell summaryCell = e.Item.Cells[0]; 源代码网推荐 源代码网推荐 summaryCell.Text = itemCountString; 源代码网推荐 summaryCell.ColumnSpan = cellCount; 源代码网推荐 summaryCell.HorizontalAlign = HorizontalAlign.Right; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 // 超控 OnLoad,以载入选定作者的详细资料 源代码网推荐 protected override void OnLoad(EventArgs e) { 源代码网推荐 base.OnLoad(e); 源代码网推荐 源代码网推荐 string authorID = Request.QueryString["AuthorID"]; 源代码网推荐 if (authorID != null) { 源代码网推荐 SelectAuthor(authorID); 源代码网推荐 detailsPanel.DataBind(); 源代码网推荐 } 源代码网推荐 } 源代码网推荐 源代码网推荐 // 根据给定作者 ID 来设置 CurrentAuthor 对象 源代码网推荐 private void SelectAuthor(string authorID) { 源代码网推荐 DataSet ds = GetSessionData(); 源代码网推荐 DataView dv = ds.Tables["Author"].DefaultView; 源代码网推荐 源代码网推荐 dv.RowFilter = "au_id = "" + authorID + """; 源代码网推荐 currentAuthor = dv[0]; 源代码网推荐 } 源代码网推荐 } 源代码网推荐 } 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
