当子网站太多时,会在顶部导航栏排成一长排,很难看,这时候,做成下拉菜单的样子就好看的多了。
那么如何实现呢?在wss 3.0中是不能直接修改导航栏的选项的(moss似乎有,求证),所以需要我们写代码来实现。
zizi在网上查阅到的大部分资料都是修改母页版。找到网站集主页的default.master,用sharepoint designer打开 ,找到代码如下图:
ID
=
"
TopNavigationMenu
"
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
http://msdn2.microsoft.com/zh-cn/library/system.web.ui.webcontrols.menu.maximumdynamicdisplaylevels(VS.80).aspx
似乎把这两个属性的值改一改,就可以实现下拉菜单。那么是不是就这么简单呢?
很明显,这就和有人莫明其妙请我吃午饭一样不可能(当然zizi把这两个的值改了无数次,无果)。
那么该怎么办呢?俗话说得好,内事不决问老婆,外事不决问google。汗......还没老婆呢,问google吧。
查了好久,终于找到了办法。
建立一个控制台应用程序,部分代码如下:
SPSite site
=
new
SPSite(
"
site url
"
);
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站点看一下,如何?好了,终于实现了!