Classe MenuItemBinding
Assembly: System.Web (in system.web.dll)
public sealed class MenuItemBinding : IStateManager, ICloneable, IDataSourceViewSchemaAccessor
public final class MenuItemBinding implements IStateManager, ICloneable, IDataSourceViewSchemaAccessor
public final class MenuItemBinding implements IStateManager, ICloneable, IDataSourceViewSchemaAccessor
Quando il controllo Menu viene associato a un'origine dati in cui ciascun elemento di dati contiene più campi (ad esempio un elemento XML con diversi attributi) e se non è stata definita nessuna associazione delle voci di menu, per impostazione predefinita in una voce di menu verrà visualizzato il valore restituito dal metodo ToString() dell'elemento di dati. Nel caso di un elemento XML, la voce di menu visualizza il nome dell'elemento, che mostra la struttura sottostante del menu, ma non ha altra utilità. È possibile associare le proprietà di una voce di menu a un determinato campo specificando le associazioni delle voci di menu. Oggetto MenuItemBinding che definisce la relazione tra ogni elemento di dati e la voce di menu a cui si sta effettuando l'associazione.
Nota |
|---|
| Quando il controllo Menu è associato a un controllo SiteMapDataSource, le associazioni delle voci di menu non hanno effetto. L'associazione viene eseguita automaticamente mediante il provider della mappa del sito. |
Gli oggetti MenuItemBinding del controllo Menu vengono memorizzati nella proprietà DataBindings e le associazioni vengono applicate all'origine dati in modo da creare una relazione uno a uno tra la gerarchia di menu e la gerarchia dell'origine dati. Per ogni elemento di dati nell'origine dati, il controllo Menu tenta di creare una corrispondenza tra l'elemento di dati e un oggetto MenuItemBinding per creare l'oggetto MenuItem corrispondente.
Quando si crea un oggetto MenuItemBinding, è necessario specificare i criteri per l'associazione. I criteri indicano quando un elemento di dati deve essere associato a una voce di menu. È possibile specificare la proprietà Depth, la proprietà DataMember o entrambe.
La profondità di una voce di menu indica il livello di menu che viene associato. Nella dichiarazione MenuItemBinding riportata di seguito, ad esempio, i campi Nome e ID dell'origine dati vengono associati rispettivamente alle proprietà Text e Value di tutti i nodi con profondità pari a 0:
<asp:MenuItemBinding Depth="0" TextField="Name" ValueField="ID">
Un membro dati specifica il tipo di elemento di dati nell'origine dati sottostante, ma può rappresentare informazioni diverse a seconda dell'origine dati. Ogni elemento di dati di un'origine dati gerarchica (rappresentato da un oggetto IHierarchyData) espone una proprietà Type che specifica il tipo dell'elemento di dati. Ad esempio, il membro dati per un elemento XML specifica il nome dell'elemento. Se in un'origine dati sono contenuti più tipi di elementi di dati, il tipo di elemento di dati da utilizzare viene specificato dal membro dati. Nella dichiarazione MenuItemBinding riportata di seguito gli elementi <Book> di un controllo XmlDataSource vengono associati a tutti le voci del menu, indipendentemente dalla posizione nella gerarchia:
<asp:MenuItemBinding DataMember="Book" TextField="Title" ValueField= "ISBN">
In alcuni casi è necessario creare un'associazione della voce di menu che specifichi sia un membro di dati, sia una profondità. Questo tipi di associazione spesso viene utilizzata quando l'origine dati contiene elementi a livelli diversi che dispongono dello stesso valore del membro dati. È possibile, ad esempio che elementi <Item> vengano visualizzati a diversi livelli all'interno di un file XML. Nelle seguenti dichiarazioni MenuItemBinding viene descritto come specificare associazioni delle voci di menu che si applicano a membri dati identici a profondità di menu diverse:
<asp:MenuItemBinding DataMember="Item" Depth="1" TextField="Title">
<asp:MenuItemBinding DataMember="Item" Depth="2" TextField="ISBN">
Se un'associazione di voci di menu viene definita senza una profondità e un membro dati, viene applicata a tutte le voci all'interno del menu. Questo tipo di associazione in genere viene utilizzata quando tutti gli elementi di dati dispongono delle stesse proprietà e devono essere visualizzati in modo identico, indipendentemente dalla profondità del menu.
Una volta stabiliti i criteri di associazione, è possibile associare una proprietà di un oggetto MenuItem che può essere associato a un valore. È possibile effettuare un'associazione a un campo di un elemento di dati o a un valore statico. Quando sono associati a un valore statico, tutti gli oggetti MenuItem a cui è applicato l'oggetto MenuItemBindingcondividono lo stesso valore. Le proprietà associate ai campi contengono i valori del campo corrispondente dell'origine dati.
Nota |
|---|
| È possibile eseguire selettivamente l'override di una proprietà associata in un oggetto MenuItem impostando direttamente la proprietà corrispondente. |
Nella tabella riportata di seguito vengono elencate le proprietà della classe MenuItemBinding che consente di associare una proprietà dell'oggetto MenuItem a un campo di un elemento di dati.
| Proprietà | Descrizione |
|---|---|
| Campo da associare alla proprietà ImageUrl di un oggetto MenuItem. | |
| Campo da associare alla proprietà NavigateUrl di un oggetto MenuItem. | |
| Campo da associare alla proprietà Text di un oggetto MenuItem. | |
| Campo da associare alla proprietà ToolTip di un oggetto MenuItem. | |
| Campo da associare alla proprietà Value di un oggetto MenuItem. |
Nella tabella riportata di seguito vengono elencate le proprietà della classe MenuItemBinding che consente di associare una proprietà dell'oggetto MenuItem a un valore statico.
| Proprietà | Descrizione |
|---|---|
| Valore statico da associare alla proprietà ImageUrl di un oggetto MenuItem. | |
| Valore statico da associare alla proprietà NavigateUrl di un oggetto MenuItem. | |
| Valore statico da associare alla proprietà Target di un oggetto MenuItem. | |
| Valore statico da associare alla proprietà Text di un oggetto MenuItem. | |
| Valore statico da associare alla proprietà ToolTip di un oggetto MenuItem. | |
| Valore statico da associare alla proprietà Value di un oggetto MenuItem. |
Se vengono definiti oggetti MenuItemBinding in conflitto, il controllo Menu applica le associazioni delle voci di menu nel seguente ordine di precedenza:
-
Oggetto MenuItemBinding che definesce e corrisponde sia a una profondità sia a un membro dati.
-
Oggetto MenuItemBinding che definisce e corrisponde soltanto al membro dati.
-
Oggetto MenuItemBinding che definisce e corrisponde soltanto alla profondità.
-
Oggetto MenuItemBinding che non definisce né la profondità né il membro dati. Questo tipo di associazione di voci di menu viene applicato a tutte le voci del menu.
-
Oggetto MenuItemBinding che non ha una corrispondenza nell'origine dati. In questo caso, il valore restituito dal metodo ToString() dell'elemento di dati viene associato alle proprietà Text e Value delle voci di menu alle quali è applicato l'oggetto MenuItemBinding.
La classe MenuItemBinding consente anche di formattare il testo visualizzato in una voce di menu impostando la proprietà FormatString.
| Argomento | Percorso |
|---|---|
| Procedura dettagliata: controllo del menu a livello di codice di ASP.NET | Generazione di applicazioni Web ASP.NET in Visual Studio |
| Procedura dettagliata: visualizzazione di un menu in pagine Web | Generazione di applicazioni Web ASP.NET in Visual Studio |
| Procedura dettagliata: visualizzazione di un menu in pagine Web | Compilazione di applicazioni con Visual Web Developer |
| Procedura dettagliata: controllo del menu a livello di codice di ASP.NET | Compilazione di applicazioni Web ASP.NET in Visual Studio |
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare gli oggetti MenuItemBinding per definire la relazione tra i campi di un controllo XmlDataSource e le voci di menu in un controllo Menu. Perché questo esempio funzioni correttamente, è necessario copiare i dati XML di esempio che seguono in un file denominato Menu.xml.
<%@ 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>
Nel codice riportato di seguito sono riportati i dati della mappa del sito di esempio per l'esempio precedente.
<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>
- AspNetHostingPermission per eseguire la classe MenuItemBinding in un ambiente host. Enumerazione associata: Minimal
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 non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.
Riferimenti
Membri MenuItemBindingSpazio dei nomi System.Web.UI.WebControls
Classe Menu
Classe MenuItem
MenuItemBindingCollection
Classe AccessDataSource
ObjectDataSource
SiteMapDataSource
SqlDataSource
XmlDataSource
Proprietà Menu.DataBindings
DataMember
Depth
FormatString
Proprietà MenuItem.ImageUrl
ImageUrl
ImageUrlField
Proprietà MenuItem.NavigateUrl
NavigateUrl
NavigateUrlField
Target
Proprietà MenuItem.Text
Text
TextField
Proprietà MenuItem.ToolTip
ToolTip
ToolTipField
Value
Value
ValueField
Nota