Настраиваемый элемент управления переходом на дочерний сайт SharePoint 2007

Меня попросили создать пользовательский элемент управления asp.net, который позволяет настраивать навигацию между дочерними сайтами веб-сайта 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. Его цель - позволить пользователю переходить к идентичным страницам между разными группами классов.

НАПРИМЕР. Скажем, я нахожусь на семестре 1 / классе 1 / классе 1 / Page2.aspx. UserControl позволит мне выбрать любой из других классов в Semester1. При выборе он автоматически перейдет к [выбранному классу] /Page2.aspx (потому что я сейчас нахожусь на странице Page2.aspx).

До сегодняшнего дня я никогда не использовал SiteMapProvider. До сих пор мне удавалось только программно пройтись по структуре сайта и распечатать простую карту сайта на страницу, используя по умолчанию CombinedNavSiteMapProvider PortalSiteMapProvider. Я думаю, что мне нужно, но не знаю, как это сделать:

  • Получите / создайте частичную структуру данных карты сайта, где корневой узел является родительским семестром текущей страницы. При необходимости это может быть моя собственная структура данных, встроенная в код. Я хочу привязать это к элементу управления меню. Кроме того, я бы хотел, чтобы в пункте корневого меню был пользовательский текст, например «Изменить класс» вместо Semester1.

Оттуда, я думаю, я могу использовать события меню для управления навигацией. Пример меню UserControl, если я нахожусь в Semester1 / Class Group 1 / Class 1 / Page2.aspx:

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

Как я могу выполнить отмеченный выше пункт?


person xr280xr    schedule 19.07.2012    source источник


Ответы (1)


Ничего элегантного не нашел. В итоге я привязал меню asp.net к CombinedNavSiteMapProvider, а затем в обработчике событий DataBound я изменил пункты меню в коде. Я вставляю корневой элемент «Изменить класс», а затем использую небольшой рекурсивный метод, чтобы установить IsSelectable в false для любых элементов меню, у которых есть дочерние элементы.

person xr280xr    schedule 10.08.2012