ASP.NET実践:非階層化コントロールにWebサイトの地図を表示するデータ

2511 ワード

Webサイトの地図データには階層化された情報が含まれており、各ノードには0つ以上のサブノードが含まれています.TreeViewおよびMenuコントロールは、データを階層化するために設計されています.ただし、Webサイトの地図データは、非階層化コントロール(例えばDropDownListCheckBoxList、その他の平面データや線形データを表示するコントロール)にバインドすることもできる.
ヒント:SiteMapPathコントロールとサポートINavigateUIDataインタフェースのコントロールのみが、Webサイトの地図ノードをリンク形式で表示できます.

≪インスタンス|Instance|emdw≫


次の例のコード使用DropDownListコントロール表示Web.sitemapファイルのWebサイトの地図.
クライアントがドロップダウンリストのアイテムを選択すると、ブラウザはすぐに選択されたページにリダイレクトします.この操作は、OnSelectedIndexChangedイベントプロセッサでRedirectメソッドを呼び出すことによって行われる.
上記のコードがテンプレートページに配置されている場合、SiteMapDataSourceコントロールのStartFromCurrentNodeプロパティは、ドロップダウン・リストが現在のページが実行される前に常にWebサイトの地図の内容を表示することを保証します.


<%@ Page Language="C#" AutoEventWireup="true" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



<script runat="server">

  void _OnSelectedIndexChanged(Object sender, EventArgs e)

  { 

    Response.Redirect(DropDownList1.SelectedItem.Value);

  }

</script>



<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>DropDownList Bound to SiteMapDataSource</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

      <asp:SiteMapDataSource ID="SiteMapDataSource1" Runat="Server"

          StartFromCurrentNode="true"

          ShowStartingNode="false" />

      <asp:DropDownList ID="DropDownList1" Runat="Server" 

          DataSourceID="SiteMapDataSource1"

          AutoPostBack="True" 

          DataTextField="Title" 

          DataValueField="Url"

          OnSelectedIndexChanged="_OnSelectedIndexChanged">

      </asp:DropDownList>

    </div>

    </form>

</body>

</html>


ページにサブノードが含まれていない場合、ドロップダウンリストは空になります.クライアントがWebにいない場合に選択する.sitemapファイルに設定URLプロパティのノードに表示されるリスト項目は、クライアントがアプリケーションのホームページにリダイレクトされます.

コンパイルコード

  • 上記コードの実行には以下の条件が必要:
  • 有効なWeb.Sitemapファイルおよびそのファイルを参照し、上記のコードを含むASP.NETファイル.コードを使用するファイルがWebにリストされていない場合.sitemapファイルのノードでは、次のプロパティをコントロールから削除します.
    
    
    StartFromCurrentNode="true"