MenuItemBinding クラス
アセンブリ: System.Web (system.web.dll 内)

Public NotInheritable Class MenuItemBinding Implements IStateManager, ICloneable, IDataSourceViewSchemaAccessor

複数の属性を持つ XML 要素などのように、各データ項目に複数のフィールドが含まれているデータ ソースに Menu コントロールがバインドされた場合、メニュー項目のバインディングを定義しなければ、メニュー項目にはデータ項目の ToString() メソッドから返される値が既定で表示されます。XML 要素の場合、メニュー項目には要素名が表示されます。これはメニューの基になる構造体を示す以外はあまり用途はありません。メニュー項目のプロパティは、メニュー項目のバインディングを指定して、特定のフィールドにバインドできます。MenuItemBinding オブジェクトは、各データ項目とそのバインド先のメニュー項目との関係を定義します。
![]() |
---|
Menu コントロールが SiteMapDataSource コントロールにバインドされている場合、メニュー項目バインディングは無効です。バインディングは、サイト マップ プロバイダを使用して自動的に実行されます。 |
Menu コントロールは、その MenuItemBinding オブジェクトを DataBindings プロパティに格納し、データ ソースにバインディングを適用して、メニューの階層構造とデータ ソースの階層構造との間に一対一リレーションシップを作成します。データ ソース内の各データ項目について、Menu コントロールは、対応する MenuItem オブジェクトを作成するために、データ項目と MenuItemBinding オブジェクトとの照合を試みます。
MenuItemBinding オブジェクトを作成する場合、バインディング基準を指定する必要があります。基準は、データ項目をメニュー項目にバインドするタイミングを示します。Depth と DataMember のいずれか、または両方を指定できます。
メニュー項目の深さはバインドされるメニュー レベルを指定します。たとえば、次の MenuItemBinding 宣言は、データ ソースの Name フィールドと ID フィールドを、深さ 0 のすべてのノードの Text プロパティと Value プロパティにそれぞれバインドします。
データ メンバは、基になるデータ ソースのデータ項目の型を指定します。ただし、データ ソースによっては異なる情報を表している場合があります。階層データ ソースの各データ項目 (IHierarchyData オブジェクトで表される) は、データ項目の型を指定する Type プロパティを公開します。たとえば、XML 要素のデータ メンバは、要素名を指定します。データ ソースに複数のデータ項目の型がある場合、使用するデータ項目の型をデータ メンバが指定します。次の MenuItemBinding 宣言は、階層構造の場所に無関係に、XmlDataSource コントロールの <Book> 要素をメニュー内のすべてのメニュー項目にバインドします。
深さとデータ メンバの両方を指定するメニュー項目バインディングの作成が必要になる場合があります。このバインディングは、データ ソースに異なるレベルで同じデータ メンバ値を持つ項目が含まれている場合によく使用されます。たとえば、1 つの XML ファイル内の異なるレベルに表示される <Item> 要素を指定できます。メニューの深さが異なる同一のデータ メンバに適用されるメニュー項目バインディングの指定方法を次の MenuItemBinding 宣言に示します。
<asp:MenuItemBinding DataMember="Item" Depth="1" TextField="Title">
<asp:MenuItemBinding DataMember="Item" Depth="2" TextField="ISBN">
深さとデータ メンバを指定せずにメニュー項目バインディングを定義した場合、メニュー項目バインディングはメニュー内のすべてのメニュー項目に適用されます。これは、通常、すべてのデータ項目に同じプロパティが存在し、メニューの深さに無関係にまったく同じ表示にする必要がある場合に使用されます。
バインディング基準が確立されたら、バインド可能な MenuItem オブジェクトのプロパティを値にバインドできます。データ項目のフィールドまたは静的な値にバインドできます。MenuItemBinding オブジェクトに静的な値がバインドされた場合、そのオブジェクトの適用先となるすべての MenuItem オブジェクトは、同じ値を共有します。フィールドにバインドされるプロパティには、データ ソースの対応するフィールドの値が格納されています。
![]() |
---|
MenuItem オブジェクト内のバインドされたプロパティは、対応するプロパティを直接設定することにより、選択的にオーバーライドできます。 |
MenuItem オブジェクトのプロパティをデータ項目のフィールドにバインドできる、MenuItemBinding クラスのプロパティの一覧を次の表に示します。
ImageUrlField | |
NavigateUrlField | |
ToolTipField | |
ValueField |
MenuItem オブジェクトのプロパティを静的な値にバインドできる、MenuItemBinding クラスのプロパティの一覧を次の表に示します。
ImageUrl | |
NavigateUrl | |
競合する MenuItemBinding オブジェクトが定義されている場合、Menu コントロールは次の優先順位でメニュー項目のバインディングを適用します。
-
深さもデータ メンバも定義しない MenuItemBinding オブジェクト。この種のメニュー項目バインディングは、メニュー内のすべてのメニュー項目に適用されます。
-
データ ソース内に一致するものがない MenuItemBinding オブジェクト。この場合、データ項目の ToString() メソッドによって返される値は、MenuItemBinding オブジェクトが適用されるメニュー項目の Text プロパティと Value プロパティにバインドされます。
MenuItemBinding クラスでは、FormatString プロパティを設定することにより、メニュー項目に表示されるテキストの書式を設定することもできます。

MenuItemBinding オブジェクトを使用して、XmlDataSource コントロールのフィールドと Menu コントロールのメニュー項目との関係を定義する方法を次のコード例に示します。この例を正常に動作させるには、以下のサンプル XML データを、Menu.xml という名前のファイルにコピーする必要があります。
<%@ page language="VB" %> <html> <body> <form runat="server"> <h3>MenuItemBinding Example</h3> <asp:menu id="NavigationMenu" datasourceid="MenuSource" runat="server"> <DataBindings> <asp:menuitembinding datamember="MapHomeNode" formatstring="({0})" textfield="Title" valuefield="Description" imageurlfield="ImageUrl" tooltipfield="ToolTip" target="_self" /> <asp:menuitembinding datamember="MapNode" depth="1" formatstring="[{0}]" textfield="Title" valuefield="Description" imageurlfield="ImageUrl" tooltipfield="ToolTip" target="_blank"/> <asp:menuitembinding datamember="MapNode" depth="2" formatstring="<{0}>" textfield="Title" valuefield="Description" imageurlfield="ImageUrl" tooltipfield="ToolTip" target="_blank"/> </DataBindings> </asp:menu> <asp:xmldatasource id="MenuSource" datafile="Menu.xml" runat="server"/> </form> </body> </html>
<%@ page language="C#" %> <html> <body> <form runat="server"> <h3>MenuItemBinding Example</h3> <asp:menu id="NavigationMenu" datasourceid="MenuSource" runat="server"> <DataBindings> <asp:menuitembinding datamember="MapHomeNode" formatstring="({0})" textfield="Title" valuefield="Description" imageurlfield="ImageUrl" tooltipfield="ToolTip" target="_self" /> <asp:menuitembinding datamember="MapNode" depth="1" formatstring="[{0}]" textfield="Title" valuefield="Description" imageurlfield="ImageUrl" tooltipfield="ToolTip" target="_blank"/> <asp:menuitembinding datamember="MapNode" depth="2" formatstring="<{0}>" textfield="Title" valuefield="Description" imageurlfield="ImageUrl" tooltipfield="ToolTip" target="_blank"/> </DataBindings> </asp:menu> <asp:xmldatasource id="MenuSource" datafile="Menu.xml" runat="server"/> </form> </body> </html>
前の例のサンプル サイト マップ データを次のコードに示します。
<MapHomeNode ImageUrl="~\Images\Home.gif"
<MapNode ImageUrl="~\Images\Music.gif"
<MapNode ImageUrl="~\Images\Classical.gif"
Description="Classical Section"
<MapNode ImageUrl="~\Images\Rock.gif"
<MapNode ImageUrl="~\Images\Jazz.gif"
</MapNode>
<MapNode ImageUrl="~\Images\Movies.gif"
<MapNode ImageUrl="~\Images\Action.gif"
<MapNode ImageUrl="~\Images\Drama.gif"
<MapNode ImageUrl="~\Images\Musical.gif"
</MapNode>
</MapHomeNode>


System.Web.UI.WebControls.MenuItemBinding


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


MenuItemBinding メンバ
System.Web.UI.WebControls 名前空間
Menu クラス
MenuItem クラス
MenuItemBindingCollection
AccessDataSource クラス
ObjectDataSource
SiteMapDataSource
SqlDataSource
XmlDataSource
Menu.DataBindings プロパティ
DataMember
Depth
FormatString
MenuItem.ImageUrl プロパティ
ImageUrl
ImageUrlField
MenuItem.NavigateUrl プロパティ
NavigateUrl
NavigateUrlField
Target
MenuItem.Text プロパティ
Text
TextField
MenuItem.ToolTip プロパティ
ToolTip
ToolTipField
Value
Value
ValueField
- MenuItemBinding クラスのページへのリンク