Я использую управление меню в asp.net. Я создаю управление меню, используя привязку данных xml.
Это xml-файл;
Получить MenuItem в динамически созданное меню в 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>
Для создания меню, в .aspx страницы, я использую;
<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>
Теперь я пытаюсь получить MenuItem из этого элемента управления меню. Для этого, при загрузке страницы, я использую;
MenuItem mn = Menu1.FindItem("Home");
Но, возвращается нуль.
Пожалуйста, помогите мне найти решение.
Спасибо заранее.
Спасибо mike. DataBinding действительно сработало. Но я столкнулся с новой проблемой. Управление моим меню находится на главной странице, и я обращаюсь к нему с дочерней страницы. Теперь событие загрузки дочерней страницы запускается перед мастером. поэтому он бросает ошибку «Ошибка ссылки на объект». Я получаю доступ к элементу управления меню с дочерней страницы в событии Load. –
Извините, но я ничего не могу придумать с головы. Мне нужно будет увидеть код, который находится на главном/дочернем страницах, связанных с меню. Я предполагаю, что вы найдете меню, в котором вы делаете page.master.findcontrol («menu1»)? –
Эй, Майк, извините за неудобства. То, что я делаю в коде позади, я просто назначаю XML-имя файла XMLDatasource и предоставляя xpath. Итак, findcontrol() вернет меню, но я пытаюсь получить доступ к MenuItem, чей идентификатор неизвестен во время разработки. Я предполагаю, что для этого требуется значение поля «Текст». После инициализации страницы, в каком-то другом событии DataBind() работал, как было предложено вами. Но при загрузке страницы он не работает. Я пошлю код за страницей, как только вернусь в офис. –