MOSS 2007 入门(7) : Navigation
MOSS2007中的站点导航是基于ASP.NET的Navigation机制的,实际上在Masterpage中是可以任意定制页面中的导航控件的。在默认的TeamSite的Default.aspx中导航控件一共有三个.在MOSS中所有导航栏都是通过ASP:Menu控件或是ASP:TreeView控件绑定到一个NavigationDataSource实现的,因此每一个导航菜单都有两个控件共同实现。首先是一个ASP:Menu控件定义导航栏的样式和层级属性,其次是有一个 asp:SiteMapDataSource或SPNavigationProvider来作为导航栏的数据源。
打开Default.Mater可以发现,三个导航栏的实现各有不同,顶部的导航栏是通过一个SharePoint:DelegateControl动态加载asp:SiteMapDataSource作为数据源的,而左侧的两个则是通过SharePoint:DelegateControl动态加载一个SPNavigationProvider实现的数据源。
顶部的导航栏代码如下:
<SharePoint:AspMenu
ID="TopNavigationMenu"
Runat="server"
DataSourceID="topSiteMap"
EnableViewState="false"
AccessKey="<%$Resources:wss,navigation_accesskey%>"
Orientation="Horizontal"
StaticDisplayLevels="2"
MaximumDynamicDisplayLevels="1"
DynamicHorizontalOffset="0"
StaticPopoutImageUrl="/_layouts/images/menudark.gif"
StaticPopoutImageTextFormatString=""
DynamicHoverStyle-BackColor="#CBE3F0"
SkipLinkText=""
StaticSubMenuIndent="0"
CssClass="ms-topNavContainer">
<StaticMenuStyle/>
<StaticMenuItemStyle CssClass="ms-topnav" ItemSpacing="0px"/>
<StaticSelectedStyle CssClass="ms-topnavselected" />
<StaticHoverStyle CssClass="ms-topNavHover" />
<DynamicMenuStyle BackColor="#F2F3F4" BorderColor="#A7B4CE" BorderWidth="1px"/>
<DynamicMenuItemStyle CssClass="ms-topNavFlyOuts"/>
<DynamicHoverStyle CssClass="ms-topNavFlyOutsHover"/>
<DynamicSelectedStyle CssClass="ms-topNavFlyOutsSelected"/>
</SharePoint:AspMenu>
<SharePoint:DelegateControl runat="server" ControlId="TopNavigationDataSource">
<Template_Controls>
<asp:SiteMapDataSource
ShowStartingNode="False"
SiteMapProvider="SPNavigationProvider"
id="topSiteMap"
runat="server"
StartingNodeUrl="sid:1002"/>
