当子网站太多时,会在顶部导航栏排成一长排,很难看,这时候,做成下拉菜单的样子就好看的多了。
那么如何实现呢?在wss 3.0中是不能直接修改导航栏的选项的(moss似乎有,求证),所以需要我们写代码来实现。
zizi在网上查阅到的大部分资料都是修改母页版。找到网站集主页的default.master,用sharepoint designer打开 ,找到代码如下图:
Runat = " server "
DataSourceID = " topSiteMap "
EnableViewState = " false "
AccessKey = " <%$Resources:wss,navigation_accesskey%> "
Orientation = " Horizontal "
StaticDisplayLevels = " 1 "
MaximumDynamicDisplayLevels = " 2 "
DynamicHorizontalOffset = " 0 "
StaticPopoutImageUrl = " /_layouts/images/menudark.gif "
StaticPopoutImageTextFormatString = ""
DynamicHoverStyle - BackColor = " #CBE3F0 "
SkipLinkText = ""
StaticSubMenuIndent = " 0 "
看到 “StaticDisplayLevels” 和“ MaximumDynamicDisplayLevels” 这两个属性。通过查阅msdn,找到“StaticDisplayLevels”是静态菜单的菜单显示级别数,默认值为 1;“ MaximumDynamicDisplayLevels”是动态菜单的菜单呈现级别数,默认值为 3。关于这两个属性,给出msdn的链接,有详细说明。http://msdn2.microsoft.com/zh-cn/library/system.web.ui.webcontrols.menu.staticdisplaylevels(VS.80).aspx
似乎把这两个属性的值改一改,就可以实现下拉菜单。那么是不是就这么简单呢?
很明显,这就和有人莫明其妙请我吃午饭一样不可能(当然zizi把这两个的值改了无数次,无果)。
那么该怎么办呢?俗话说得好,内事不决问老婆,外事不决问google。汗......还没老婆呢,问google吧。
查了好久,终于找到了办法。
建立一个控制台应用程序,部分代码如下:
SPWeb web = site.OpenWeb();
SPList list = web.Lists[ 0 ];
SPNavigationNode node = null ;
node = new SPNavigationNode( " title " , " url " , false );
SPNavigationNode rootListLink = web.Navigation.TopNavigationBar[ 0 ];
rootListLink.Children.AddAsFirst(node);
编译,调试。
刷新我们的wss站点看一下,如何?好了,终于实现了!