J'utilise le contrôle Menu dans asp.net. Je crée le contrôle de menu en utilisant la liaison de données xml.
Voici le fichier xml;
Obtenir MenuItem dans un menu créé dynamiquement dans asp.net
<?xml version="1.0" encoding="utf-8" ?>
<Items Text="">
<Item Text="" ImgPath="./../images/home.gif" Url="" Value="Home" />
<Item Text="" ImgPath="" Url="" Value="Time Entry" >
<Item Text="" Value="Our Clients" ImgPath="./../images/oc.gif" Url="~/OurClients.aspx" />
</Item>
<Item Text="" ImgPath="" Value="Admin" Url="">
<Item Text="" Value="About Us" ImgPath="./../images/AboutUs.gif" Url ="~/AboutUs.aspx" />
</Item>
</Items>
Pour créer le menu, à la page .aspx, je me sers;
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" DisappearAfter="10"
Width="300px" DataSourceID="XmlDataSource1" StaticEnableDefaultPopOutImage="False" OnMenuItemClick="Menu1_MenuItemClick">
<StaticMenuItemStyle CssClass="MenuItem" />
<DynamicHoverStyle CssClass="SubMenuItemHover" />
<DynamicMenuItemStyle CssClass="SubMenuItem" />
<StaticHoverStyle CssClass="MenuItemHover" />
<DataBindings>
<asp:MenuItemBinding DataMember="Item" NavigateUrlField="Url" TextField="Text" ImageUrlField="ImgPath" ValueField="Value" />
</DataBindings>
</asp:Menu>
Maintenant, je suis en train de se MenuItem de ce contrôle Menu. Pour cela, au chargement de la page, j'utilise;
MenuItem mn = Menu1.FindItem("Home");
Mais, il est de retour nul.
Aidez-moi s'il vous plaît à obtenir la solution.
Merci à l'avance.
Merci mike. DataBinding a fonctionné. Mais, je suis confronté à un nouveau problème. Mon contrôle Menu est dans la page maître et j'y accède à partir d'une page enfant. Maintenant, l'événement de chargement de la page enfant est déclenché avant le maître. de sorte qu'il lance l'erreur "Object referrence not found". J'accède au contrôle Menu à partir de la page enfant dans l'événement Load. –
Désolé, mais je ne peux pas penser à quelque chose de haut de ma tête. Je devrais voir le code derrière les pages maître/enfant liées au menu. Je suppose pour trouver le menu que vous faites un page.master.findcontrol ("menu1")? –
Hey Mike, désolé pour le dérangement. Ce que je fais dans le code derrière, c'est que j'affecte juste le nom de fichier xml à XMLDatasource et fournit le xpath. Ainsi, findcontrol() retournera le menu, mais j'essaie d'accéder à MenuItem, dont l'ID n'est pas connu au moment du design. Je suppose qu'il nécessite une valeur de champ "Texte". Après l'initialisation de la page, sur un autre événement DataBind() a fonctionné comme suggéré par vous. Mais, au chargement de la page, cela ne fonctionne pas. Je vais partager le code derrière la page une fois que je serai de retour au bureau. –