0

SharePoint 2007 Web サイトのサブサイト間のカスタム ナビゲーションを可能にする asp.net UserControl を作成するように依頼されました。サイトは、さまざまなクラスのグループを持つ学期を持つ学校の構造を模倣しています。以下は、サイト構造の簡略版です。

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 ページに配置されます。その目的は、ユーザーが異なるクラス グループ間で同一のページに移動できるようにすることです。

EG たとえば、私が Semester1/Class Group 1/Class 1/Page2.aspx にいるとしましょう。UserControl を使用すると、Semester1 の他のクラスを選択できます。選択すると、[選択したクラス]/Page2.aspx に自動的に移動します (現在 Page2.aspx を使用しているため)。

今日まで、私は SiteMapProvider を使用したことがありません。これまでのところ、サイト構造をプログラムで調べ、デフォルトの CombinedNavSiteMapProvider PortalSiteMapProvider を使用して簡単なサイト マップをページに出力することしかできませんでした。必要だと思うのですが、どうすればよいかわかりません:

  • ルート ノードが現在のページの親学期である部分的なサイト マップ データ構造を取得/構築します。これは、必要に応じて、コードに組み込まれた独自のデータ構造にすることができます。これをメニューコントロールにバインドしたい。さらに、ルート メニュー項目には、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

上記の箇条書きの項目を達成するにはどうすればよいですか?

4

1 に答える 1

0

エレガントなものは見つかりませんでした。最後に、asp.net メニューを CombinedNavSiteMapProvider にバインドしてから、DataBound イベント ハンドラーでコード内のメニュー項目を変更しました。ルートの「Change Class」項目を挿入し、少し再帰的な方法を使用して、子を持つメニュー項目の IsSelectable を false に設定します。

于 2012-08-10T21:39:20.257 に答える