C# 自定义SharePoint 2007子网站导航控件
我被要求创建一个asp.net用户控件,允许在SharePoint 2007网站的子网站之间进行自定义导航。这些网站模仿学校结构,每个学期都有不同的班级。以下是网站结构的简化版本:C# 自定义SharePoint 2007子网站导航控件,c#,sharepoint-2007,navigation,sitemapprovider,C#,Sharepoint 2007,Navigation,Sitemapprovider,我被要求创建一个asp.net用户控件,允许在SharePoint 2007网站的子网站之间进行自定义导航。这些网站模仿学校结构,每个学期都有不同的班级。以下是网站结构的简化版本: Site Root Search Semester1 Class Group 1 Class 1 Page1.aspx Page2.aspx Class 2
Site Root
Search
Semester1
Class Group 1
Class 1
Page1.aspx
Page2.aspx
Class 2
Page1.aspx
Page2.aspx
Class Group 2
Class 3
Page1.aspx
Page2.aspx
Class 4
Page1.aspx
Page2.aspx
Semester2
Class Group 1
Class 1
Page1.aspx
Page2.aspx
Class 2
Page1.aspx
Page2.aspx
Class Group 2
Class 3
Page1.aspx
Page2.aspx
Class 4
Page1.aspx
Page2.aspx
Some Other Subsites
UserControl将放置在classes.aspx页面上。它的目的是允许用户在不同的类组之间导航到相同的页面
例如,假设我在学期1/班级1/班级1/页面2.aspx上。UserControl允许我选择Semester1下的任何其他类。选择后,它将自动导航到[selected class]/Page2.aspx(因为我当前在Page2.aspx)
在今天之前,我从未使用过SiteMapProvider。到目前为止,我只能通过编程方式浏览站点结构,并使用默认的组合NavSiteMapProvider PortalItemApprovider将简单的站点地图打印到页面。我认为我需要但不确定如何做的是:
- 获取/构建部分站点地图数据结构,其中根节点是当前页面的父节点。如果需要,这可以是我自己的数据结构内置代码。我想把它绑定到一个菜单控件。此外,我希望根菜单项具有自定义文本,如“Change Class”,而不是Semest1
Change Class
Class Group 1
Class 1
Class 2
Class Group 2
Class 3
Class 4
我怎样才能完成上面的项目?我没有发现任何优雅的东西。最后,我将asp.net菜单绑定到CombinedNavSiteMapProvider,然后在数据绑定事件处理程序中,在代码中修改菜单项。我插入一个根“Change Class”项,然后使用一个小的递归方法将任何具有子菜单项的IsSelectable设置为false