65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.67/5 (2投票s)

2009 年 1 月 9 日

CPOL

2分钟阅读

viewsIcon

53098

本文档展示了如何在 SharePoint 中使用 ASP.NET TreeView 控件。

TreeView in SharePoint

引言

本文解释了如何在 SharePoint (WSS 3/MOSS 2007) 中使用 ASP.NET TreeView 实现当前导航。

如果您将 SharePoint 用作内容管理系统,例如,如果您有一个发布站点,其中包含在内容层次结构中排序的许多页面,并且希望以用户友好的树形视图导航控件呈现这些页面,这将非常有用。

自然地,您可以将树形视图控件与主页上的水平菜单控件结合使用,以便通过页面顶部的水平菜单呈现主要的全局导航,并通过站点左侧的垂直树呈现次要的本地导航。

背景

默认情况下,SharePoint 使用 SharePoint:AspMenu 实现当前导航,通常显示在页面的左侧。

SharePoint 还附带一个 SharePoint:SPTreeView 控件,该控件显示站点的类别。但是,如果您想将左侧的当前导航渲染为树形结构,并带有可展开和折叠的菜单项,则需要对主页和 webconfig.sps.xml 文件进行一些更改。

Using the Code

  1. 如果有一个 ID 为 "PlaceHolderLeftNavBar" 的内容占位符,则找到占位符内的 SharePoint:AspMenu 并将其替换为 ASP:TreeView
  2. 如果您没有占位符,则将控件插入到主页中。

  3. SiteMapProvider="CurrentNavSiteMapProviderNoEncode" 用作 TreeView 控件的数据源。
  4. 如果您已经有一个 "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"
  5. 最后,您需要更改 webconfig.sps.xml 文件,该文件应该位于此处:"C:\\Progam Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG"
  6. 找到名为 "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>
  7. 保存文件并重置 IIS。

关注点

有各种属性可用于自定义 TreeView 控件。

© . All rights reserved.