如何:在 SharePoint 中使用 TreeView 进行当前导航






3.67/5 (2投票s)
本文档展示了如何在 SharePoint 中使用 ASP.NET TreeView 控件。
引言
本文解释了如何在 SharePoint (WSS 3/MOSS 2007) 中使用 ASP.NET TreeView
实现当前导航。
如果您将 SharePoint 用作内容管理系统,例如,如果您有一个发布站点,其中包含在内容层次结构中排序的许多页面,并且希望以用户友好的树形视图导航控件呈现这些页面,这将非常有用。
自然地,您可以将树形视图控件与主页上的水平菜单控件结合使用,以便通过页面顶部的水平菜单呈现主要的全局导航,并通过站点左侧的垂直树呈现次要的本地导航。
背景
默认情况下,SharePoint 使用 SharePoint:AspMenu
实现当前导航,通常显示在页面的左侧。
SharePoint 还附带一个 SharePoint:SPTreeView
控件,该控件显示站点的类别。但是,如果您想将左侧的当前导航渲染为树形结构,并带有可展开和折叠的菜单项,则需要对主页和 webconfig.sps.xml 文件进行一些更改。
Using the Code
- 如果有一个 ID 为 "
PlaceHolderLeftNavBar
" 的内容占位符,则找到占位符内的SharePoint:AspMenu
并将其替换为ASP:TreeView
。 - 将
SiteMapProvider="CurrentNavSiteMapProviderNoEncode"
用作TreeView
控件的数据源。 - 最后,您需要更改 webconfig.sps.xml 文件,该文件应该位于此处:"C:\\Progam Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG"。
- 保存文件并重置 IIS。
如果您没有占位符,则将控件插入到主页中。
如果您已经有一个 "PlaceHolderLeftNavBar
" 内容占位符,则可以简单地将步骤 1 中替换的 SharePoint:AspMenu
下方的 SiteMapProvider="CurrentNavSiteMapProvider"
更改为该值。
在这里,我使用 PortalSiteMap 数据源
<ASP:TreeView id="MyID" runat="server" DataSourceID="MyDatasource"
ExpandDepth="0"></ASP:TreeView>
<PublishingNavigation:PortalSiteMapDataSource ID="MyDatasource"
runat="server" SiteMapProvider="CurrentSiteMapProviderNoEncode"
找到名为 "CurrentNavSiteMapProviderNoEncode
" 的提供程序,并添加属性 RequireUniqueKeysForNodes="true"
。
以下显示了相关部分
<add path="configuration/system.web/siteMap/providers"
id="{009E5494-26C5-4181-936F-4D16F444B642}">
<add name="GlobalNavSiteMapProvider"
description="CMS provider for Global navigation"
type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider,
Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" NavigationType="Global" EncodeOutput="true"/>
<add name="CombinedNavSiteMapProvider"
description="CMS provider for Combined navigation"
type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider,
Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" NavigationType="Combined" EncodeOutput="true"/>
<add name="CurrentNavSiteMapProvider"
description="CMS provider for Current navigation"
type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider,
Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" NavigationType="Current" EncodeOutput="true"/>
<add name="CurrentNavSiteMapProviderNoEncode"
description="CMS provider for Current navigation, no encoding of output"
type="Microsoft.SharePoint.Publishing.Navigation.PortalSiteMapProvider,
Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c" NavigationType="Current" EncodeOutput="false"
RequireUniqueKeysForNodes="true"/>
<add name="SiteDirectoryCategoryProvider"
description="Site Directory category provider"
type="Microsoft.SharePoint.Portal.WebControls.SiteDirectoryCategoryProvider,
Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c"/>
<add name="MySiteMapProvider"
description=
"MySite provider that returns areas and based on the current user context"
type="Microsoft.SharePoint.Portal.MySiteMapProvider,
Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c"/>
<add name="MySiteLeftNavProvider"
description=
"MySite Left Nav provider that returns areas
and based on the current user context"
type="Microsoft.SharePoint.Portal.MySiteLeftNavProvider,
Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=71e9bce111e9429c"/>
</add>
关注点
有各种属性可用于自定义 TreeView
控件。