繁体   English   中英

自定义SharePoint 2007子网站导航控件

[英]Custom SharePoint 2007 Subsite Navigation Control

我被要求创建一个asp.net UserControl,该控件允许在SharePoint 2007网站的子网站之间进行自定义导航。 这些站点模仿一个具有不同班级的学期的学校结构。 这是站点结构的简化版本:

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将放置在类的.aspx页上。 目的是允许用户导航到不同类组之间的相同页面。

例如,假设我在Semester1 / Class Group 1 / Class 1 / Page2.aspx。 UserControl将允许我选择Semester1下的任何其他类。 选择后,它将自动导航到[selected class] /Page2.aspx(因为我目前在Page2.aspx上)。

在今天之前,我从未使用过SiteMapProvider。 到目前为止,我仅使用默认的CombinedNavSiteMapProvider PortalSiteMapProvider以编程方式遍历了网站结构,并在页面上打印了一个简单的网站地图。 我认为我需要但不确定如何做的是:

  • 获取/构建局部站点地图数据结构,其中根节点是当前页面的上一学期。 如有必要,这可以是我自己的内置在代码中的数据结构。 我想将此绑定到菜单控件。 另外,我希望根菜单项具有自定义文本,例如“ Change Class”,而不是Semester1。

从那里开始,我认为我可以使用菜单事件来处理导航。 如果我在Semester1 / Class Group 1 / Class 1 / Page2.aspx上,则为UserControl菜单的示例:

    Change Class
        Class Group 1
            Class 1
            Class 2
        Class Group 2
            Class 3
            Class 4

如何完成上述项目符号?

我没有发现任何优雅的东西。 我最终将asp.net菜单绑定到CombinedNavSiteMapProvider,然后在DataBound事件处理程序中,修改代码中的菜单项。 我插入一个根“ Change Class”项,然后对所有具有子项的菜单项使用一种递归方法将IsSelectable设置为false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM