ASP.NET 2.0数据教程:给每个部分添加Default.aspx页面
创始人
2024-04-20 14:11:35
0

在我们的站点中这个课程被分成不同的分类-Basic Reporting,Filtering,Custom Formatting等等-每个分类有一个文件夹并且有对应课程的aspx页面。并且,每个文件夹里包含一个Default.aspx页面。在这个默认页面中,将显示这个部分的所有课程。比如,我们可以通过BasicReporting文件夹里的Default.aspx页面连接到SimpleDisplay.aspx,DeclarativeParams.aspx和ProgrammaticParams.aspx。这里,我们可以再次使用SiteMap类和一个数据显示控件显示定义在Web.sitemap文件内的站点地图的信息。

让我们再次使用Repeater显示一个无序列表,不过这次我们会显示指南的标题和描述。我们需要在每个Default.aspx页面重复这些标记和代码,我们可以将这个UI逻辑封装成一个User Control。在站点中添加一个名为UserControls的文件夹并添加一个名为SectionLevelTutorialListing.ascx的Web用户控件,它包含一下标记:

向UserControls文件夹里添加新Web用户控件 

Default.aspx页面:向UserControls文件夹里添加新Web用户控件

SectionLevelTutorialListing.ascx 

  1. < %@ Control Language="C#" AutoEventWireup="true"   
  2. CodeFile="SectionLevelTutorialListing.ascx.cs"   
  3. Inherits="UserControls_SectionLevelTutorialListing" %>  
  4. < asp:Repeater ID="TutorialList" runat="server" EnableViewState="False">  
  5.     < HeaderTemplate>< ul>< /HeaderTemplate>  
  6.     < ItemTemplate>  
  7.         < li>< asp:HyperLink runat="server" 
  8.          NavigateUrl="< %# Eval("Url") %>" Text="< %# Eval("Title")  
  9.          %>">< /asp:HyperLink>  
  10.                 - < %# Eval("Description") %>< /li>  
  11.     < /ItemTemplate>  
  12.     < FooterTemplate>< /ul>< /FooterTemplate>  
  13. < /asp:Repeater> 

SectionLevelTutorialListing.ascx.cs

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Collections;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.WebControls;  
  9. using System.Web.UI.WebControls.WebParts;  
  10. using System.Web.UI.HtmlControls;  
  11.  
  12. public partial class UserControls_SectionLevelTutorialListing : System.Web.UI.UserControl  
  13. {  
  14.     protected void Page_Load(object sender, EventArgs e)  
  15.     {  
  16.         // If SiteMap.CurrentNode is not null,  
  17.         // bind CurrentNode ChildNodes to the GridView  
  18.         if (SiteMap.CurrentNode != null)  
  19.         {  
  20.             TutorialList.DataSource = SiteMap.CurrentNode.ChildNodes;  
  21.             TutorialList.DataBind();  
  22.         }  
  23.     }  

在前面的Repeater例子中我将SiteMap的数据绑定到Repeater上;当然,这个SectionLevelTutorialListing用户控件也将使用这种方法。在Page_Load事件里,有一个检测程序以确保这是否是第一次访问该页面(不是返回)并且这个页面的URL要映射到站点地图中的一个节点。如果页面使用了这个用户控件,那么就没有对应的

< siteMapNode>,SiteMap.CurrentNode会返回null并且将没有数据绑定到Repeater控件。假设我们有一个CurrentNode,我可以将它的ChildNodes集合绑定到这个Repeater。每个部分的Default.aspx页面是这个部分内教程的父节点,这些代码会展示每个部分内教程的连接和描述,下面是屏幕截图:

一旦这个Repeater创建好后,在设计视图里打开每个文件夹的Default.aspx页面,将这个用户控件拖到你要显示的地方。

图14:用户控件已经添加到Default.aspx页面上 

图14:用户控件已经添加到Default.aspx页面上

Basic Reporting指南的列表 

图15:Basic Reporting指南的列表

总结

完成站点地图和母板页后,现在我们的教程站点拥有统一的页面布局和导航体系。尽管我们的站点有很多页面,但是我们可以集中的更新站点页面布局和站点导航信息。明确一点,页面布局信息在母板页Site.master中定义,站点地图在Web.sitemap中定义。我们不需要写任何代码就完成了站点页面布局和导航机制,Visual Studio提供了所见即所得的设计时支持。

完成了数据访问层和业务逻辑层并且定义了一个统一的页面布局和站点导航系统,下一步我们将探索通用报表模式。在接下来的三个指南里我们将会看到基本报表任务-用GridView,DetailsView和FormView控件显示从业务逻辑层获取的数据。

【编辑推荐】

  1. ASP.NET 2.0数据教程:给BLL类添加业务规则
  2. ASP.NET 2.0数据教程:通过BLL类访问类型化数据集
  3. ASP.NET 2.0数据教程:创建BLL类
  4. ASP.NET编程中的实用技巧
  5. ASP.NET技巧小结

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...