如何:在 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 控件。

