.NET Framework Class Library MenuItemBinding Class Defines the relationship between a data item and the menu item it is binding to in a Menu control. This class cannot be inherited.

Inheritance Hierarchy
Namespace:
System.Web.UI.WebControls
Assembly:
System.Web (in System.Web.dll)

Syntax
Public NotInheritable Class MenuItemBinding _
Implements IStateManager, ICloneable, IDataSourceViewSchemaAccessor
public sealed class MenuItemBinding : IStateManager,
ICloneable, IDataSourceViewSchemaAccessor
public ref class MenuItemBinding sealed : IStateManager,
ICloneable, IDataSourceViewSchemaAccessor
[<Sealed>]
type MenuItemBinding =
class
interface IStateManager
interface ICloneable
interface IDataSourceViewSchemaAccessor
end
The MenuItemBinding type exposes the following members.

Constructors
|
| Name | Description |
|---|
.gif) | MenuItemBinding | Initializes a new instance of the MenuItemBinding class. | Top

Methods

Explicit Interface Implementations

Remarks
When the Menu control is bound to a data source where each data item contains multiple fields (such as an XML element with several attributes), if no menu item bindings are defined, a menu item displays the value returned by the ToString() method of the data item by default. In the case of an XML element, the menu item displays the element name, which shows the underlying structure of the menu, but is not very useful otherwise. You can bind the properties of a menu item to a specific field by specifying menu item bindings. A MenuItemBinding object defines the relationship between each data item and the menu item it is binding to. Note |
|---|
When the Menu control is bound to a SiteMapDataSource control, menu item bindings have no effect. Binding is performed automatically using the site map provider. |
The Menu control stores its MenuItemBinding objects in the DataBindings property and applies the bindings to the data source to create a one-to-one relationship between the menu hierarchy and the data source hierarchy. For each data item in the data source, the Menu control attempts to match the data item to a MenuItemBinding object to create the corresponding MenuItem object. When creating a MenuItemBinding object, you must specify the criteria for binding. The criteria indicate when a data item should be bound to a menu item. You can specify the Depth, the DataMember, or both. A menu item depth specifies the menu level that gets bound. For example, the following MenuItemBinding declaration binds the Name and ID fields of the data source to the Text and Value properties, respectively, of all nodes with a depth of 0:
<asp:MenuItemBinding Depth="0" TextField="Name" ValueField="ID">
A data member specifies the type of the data item in the underlying data source, but can represent different information depending on the data source. Each data item in a hierarchical data source (represented by an IHierarchyData object) exposes a Type property, which specifies the type of the data item. For example, the data member for an XML element specifies the name of the element. When a data source contains multiple data item types, the data member specifies which data item type to use. The following MenuItemBinding declaration binds the <Book> elements of an XmlDataSource control to all the menu items in the menu, regardless of the location in the hierarchy:
<asp:MenuItemBinding DataMember="Book" TextField="Title" ValueField= "ISBN">
Sometimes you might need to create a menu item binding that specifies both a depth and a data member. This is often used when the data source contains items at different levels that have the same data member value. For example, you can have <Item> elements that appear at different levels within an XML file. The following MenuItemBinding declarations show how to specify menu item bindings that apply to identical data members at different menu depths: <asp:MenuItemBinding DataMember="Item" Depth="1" TextField="Title"> <asp:MenuItemBinding DataMember="Item" Depth="2" TextField="ISBN"> If a menu item binding is defined without a depth and a data member, the menu item binding is applied to all menu items within the menu. This is commonly used when all data items have the same properties and should be displayed identically, regardless of the menu depth. After the binding criteria are established, you can then bind a property of a MenuItem object that can be bound to a value. You can bind to a field of a data item or to a static value. When bound to a static value, all MenuItem objects to which the MenuItemBinding object is applied share the same value. Properties bound to fields contain the values of the corresponding field from the data source. Note |
|---|
You can selectively override a bound property in a MenuItem object by setting the corresponding property directly. |
The following table lists the properties of the MenuItemBinding class that allow you to bind a property of the MenuItem object to a field of a data item. The following table lists the properties of the MenuItemBinding class that allow you to bind a property of the MenuItem object to a static value. If conflicting MenuItemBinding objects are defined, the Menu control applies the menu item bindings in the following order of precedence: The MenuItemBinding object that defines and matches both a depth and a data member. The MenuItemBinding object that defines and matches the data member only. The MenuItemBinding object that defines and matches the depth only. The MenuItemBinding object that defines neither the depth nor the data member. (This type of menu item binding is applied to all menu items in the menu.) The MenuItemBinding object that does not have a match in the data source. In this case, the value returned by the ToString() method of the data item is then bound to the Text and Value properties of the menu items to which the MenuItemBinding object is applied.
The MenuItemBinding class also allows you to format the text displayed in a menu item by setting the FormatString property.

Examples
The following code example demonstrates how to use MenuItemBinding objects to define the relationship between the fields of an XmlDataSource control and the menu items in a Menu control. For this example to work correctly, you must copy the sample XML data below to a file named Menu.xml.
<%@ page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
<title>MenuItemBinding Example</title>
</head>
<body>
<form id="form1" 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#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
<title>MenuItemBinding Example</title>
</head>
<body>
<form id="form1" 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>
The following code is sample site map data for the previous example. <MapHomeNode ImageUrl="~\Images\Home.gif" Title="Home" Description="Root Page" ToolTip="Home Page"> <MapNode ImageUrl="~\Images\Music.gif" Title="Music" Description="Music Category" ToolTip="Music Page"> <MapNode ImageUrl="~\Images\Classical.gif" Title="Classical" Description="Classical Section" ToolTip="Classical Page"/> <MapNode ImageUrl="~\Images\Rock.gif" Title="Rock" Description="Rock Section" ToolTip="Rock Page"/> <MapNode ImageUrl="~\Images\Jazz.gif" Title="Jazz" Description="Jazz Section" ToolTip="Jazz Page"/> </MapNode> <MapNode ImageUrl="~\Images\Movies.gif" Title="Movies" Description="Movies Category" ToolTip="Movies Page"> <MapNode ImageUrl="~\Images\Action.gif" Title="Action" Description="Action Section" ToolTip="Action Page"/> <MapNode ImageUrl="~\Images\Drama.gif" Title="Drama" Description="Drama Section" ToolTip="Drama Page"/> <MapNode ImageUrl="~\Images\Musical.gif" Title="Musical" Description="Musical Section" ToolTip="Musical Page"/> </MapNode> </MapHomeNode>

Version Information
.NET FrameworkSupported in: 4, 3.5, 3.0, 2.0

Platforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role not supported), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Thread Safety
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also
|
Bibliothèque de classes .NET Framework MenuItemBinding, classe Définit la relation entre un élément de données et l'élément de menu auquel il est lié dans un contrôle Menu. Cette classe ne peut pas être héritée.

Hiérarchie d'héritage
Espace de noms :
System.Web.UI.WebControls
Assembly :
System.Web (dans System.Web.dll)

Syntaxe
Public NotInheritable Class MenuItemBinding _
Implements IStateManager, ICloneable, IDataSourceViewSchemaAccessor
public sealed class MenuItemBinding : IStateManager,
ICloneable, IDataSourceViewSchemaAccessor
public ref class MenuItemBinding sealed : IStateManager,
ICloneable, IDataSourceViewSchemaAccessor
[<Sealed>]
type MenuItemBinding =
class
interface IStateManager
interface ICloneable
interface IDataSourceViewSchemaAccessor
end
Le type MenuItemBinding expose les membres suivants.

Constructeurs

Méthodes

Implémentations d'interface explicite

Notes
Lorsque le contrôle Menu est lié à une source de données où chaque élément de données contient plusieurs champs (tel qu'un élément XML avec plusieurs attributs), si aucune liaison d'élément de menu n'est définie, un élément de menu affiche la valeur retournée par la méthode ToString() de l'élément de données par défaut. Dans le cas d'un élément XML, l'élément de menu affiche le nom de l'élément, lequel affiche la structure sous-jacente du menu, mais n'est pas pour autant très utile. Vous pouvez lier les propriétés d'un élément de menu à un champ spécifique en spécifiant des liaisons d'élément de menu. Un objet MenuItemBinding définit la relation entre chaque élément de données et l'élément de menu auquel il est lié. Remarque |
|---|
Lorsque le contrôle Menu est lié à un contrôle SiteMapDataSource, les liaisons d'élément de menu n'ont aucun effet. La liaison est effectuée automatiquement à l'aide du fournisseur de plan de site. |
Le contrôle Menu stocke ses objets MenuItemBinding dans la propriété DataBindings et applique les liaisons à la source de données afin de créer une relation un-à-un entre la hiérarchie de menus et la hiérarchie des sources de données. Pour chaque élément de données de la source de données, le contrôle Menu tente de faire correspondre l'élément de données à un objet MenuItemBinding afin de créer l'objet MenuItem correspondant. Lorsque vous créez un objet MenuItemBinding, vous devez spécifier les critères de liaison. Les critères indiquent à quel moment un élément de données doit être lié à un élément de menu. Vous pouvez spécifier Depth, DataMember ou les deux. Une profondeur de l'élément de menu spécifie le niveau de menu qui est lié. Par exemple, la déclaration MenuItemBinding suivante lie les champs ID et Nom de la source de données aux propriétés Text et Value, respectivement, de tous les nœuds d'une profondeur de 0 :
<asp:MenuItemBinding Depth="0" TextField="Name" ValueField="ID">
Une donnée membre spécifie le type de l'élément de données dans la source de données sous-jacente, mais peut également représenter des informations différentes selon la source de données. Chaque élément de données dans une source de données hiérarchique (représenté par un objet IHierarchyData) expose une propriété Type qui spécifie le type de l'élément de données. Par exemple, la donnée membre d'un élément XML spécifie le nom de l'élément. Lorsqu'une source de données contient plusieurs types d'éléments de données, les données membres spécifient le type d'élément de données à utiliser. La déclaration MenuItemBinding suivante lie les éléments <Book> d'un contrôle XmlDataSource à tous les éléments de menu dans le menu, indépendamment de l'emplacement dans la hiérarchie :
<asp:MenuItemBinding DataMember="Book" TextField="Title" ValueField= "ISBN">
Parfois vous pouvez avoir à créer une liaison d'élément de menu qui spécifie à la fois une profondeur et une donnée membre. Cette tâche est souvent utilisée lorsque la source de données contient des éléments à différents niveaux qui ont la même valeur de donnée membre. Par exemple, vous pouvez avoir des éléments <Item> qui apparaissent à des niveaux différents dans un fichier XML. Les déclarations MenuItemBinding suivantes indiquent comment spécifier des liaisons d'élément de menu qui s'appliquent à des données membres identiques à des profondeurs de menu différentes : <asp:MenuItemBinding DataMember="Item" Depth="1" TextField="Title"> <asp:MenuItemBinding DataMember="Item" Depth="2" TextField="ISBN"> Si une liaison d'élément de menu est définie sans profondeur et sans donnée membre, la liaison d'élément de menu est appliquée à tous les éléments de menu dans le menu. Cela est généralement utilisé lorsque tous les éléments de données ont les mêmes propriétés et doivent être affichés de la même manière, indépendamment de la profondeur de menu. Une fois les critères de liaison établis, vous pouvez ensuite lier une propriété d'un objet MenuItem qui peut être lié à une valeur. Vous pouvez lier à un champ d'un élément de données ou à une valeur statique. Lorsqu'ils sont liés à une valeur statique, tous les objets MenuItem auxquels l'objet MenuItemBinding est appliqué partagent la même valeur. Les propriétés liées aux champs contiennent les valeurs du champ correspondant de la source de données. Remarque |
|---|
Vous pouvez substituer sélectivement une propriété liée dans un objet MenuItem en définissant la propriété correspondante directement. |
Le tableau suivant répertorie les propriétés de la classe MenuItemBinding qui vous permet de lier une propriété de l'objet MenuItem à un champ d'un élément de données. Le tableau suivant répertorie les propriétés de la classe MenuItemBinding qui vous permet de lier une propriété de l'objet MenuItem à une valeur statique. Si les objets MenuItemBinding en conflit sont définis, le contrôle Menu applique les liaisons d'élément de menu dans l'ordre de priorité suivant : Objet MenuItemBinding qui définit et correspond une profondeur et une donnée membre. Objet MenuItemBinding qui définit et correspond à la donnée membre uniquement. Objet MenuItemBinding qui définit et correspond à la profondeur uniquement. Objet MenuItemBinding qui ne définit ni la profondeur, ni les données membres. (Ce type de liaison d'élément de menu est appliqué à tous les éléments de menu dans le menu.) Objet MenuItemBinding qui n'a pas de correspondance dans la source de données. Dans ce cas, la valeur retournée par la méthode ToString() de l'élément de données est ensuite liée aux propriétés Text et Value des éléments de menu auxquels l'objet MenuItemBinding est appliqué.
La classe MenuItemBinding vous permet également de mettre en forme le texte affiché dans un élément de menu en définissant la propriété FormatString.

Exemples
L'exemple de code suivant illustre comment utiliser des objets MenuItemBinding pour définir la relation entre les champs d'un contrôle XmlDataSource et les éléments de menu d'un contrôle Menu. Pour que cet exemple fonctionne, vous devez copier l'exemple de données XML ci-dessous dans un fichier nommé Menu.xml.
<%@ page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
<title>MenuItemBinding Example</title>
</head>
<body>
<form id="form1" 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#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
<title>MenuItemBinding Example</title>
</head>
<body>
<form id="form1" 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>
Le code suivant est un exemple de données de plan de site de l'exemple précédent. <MapHomeNode ImageUrl="~\Images\Home.gif" Title="Home" Description="Root Page" ToolTip="Home Page"> <MapNode ImageUrl="~\Images\Music.gif" Title="Music" Description="Music Category" ToolTip="Music Page"> <MapNode ImageUrl="~\Images\Classical.gif" Title="Classical" Description="Classical Section" ToolTip="Classical Page"/> <MapNode ImageUrl="~\Images\Rock.gif" Title="Rock" Description="Rock Section" ToolTip="Rock Page"/> <MapNode ImageUrl="~\Images\Jazz.gif" Title="Jazz" Description="Jazz Section" ToolTip="Jazz Page"/> </MapNode> <MapNode ImageUrl="~\Images\Movies.gif" Title="Movies" Description="Movies Category" ToolTip="Movies Page"> <MapNode ImageUrl="~\Images\Action.gif" Title="Action" Description="Action Section" ToolTip="Action Page"/> <MapNode ImageUrl="~\Images\Drama.gif" Title="Drama" Description="Drama Section" ToolTip="Drama Page"/> <MapNode ImageUrl="~\Images\Musical.gif" Title="Musical" Description="Musical Section" ToolTip="Musical Page"/> </MapNode> </MapHomeNode>

Informations de version
.NET FrameworkPris en charge dans : 4, 3.5, 3.0, 2.0

Plateformes
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Sécurité des threads
Tous les membres static ( Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi
|