ASP.NET Menu Control - Сохранение родительского элемента выбранным - PullRequest
0 голосов
/ 22 июля 2010

У меня есть два элемента управления ASP.NET Menu на странице.

Один в моем заголовке (вкладки) для страниц верхнего уровня, например ~/Default.aspx

И один в моей боковой панели для подстраниц, например ~/Products/SomeProduct.aspx

используя класс CSS selected, чтобы убедиться, что выбранная вкладка имеет другой цвет.

Работает нормально для страниц верхнего уровня, но если я просматриваю подстраницу, вкладке не назначается класс CSS selected.

Как обеспечить, чтобы элемент меню верхнего уровня имел класс CSS selected при просмотре подстраницы?

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Разобрался с помощью соответствующего вопроса:

Установить item.selected в ASP.NET Menu Control

protected void Page_Load(object sender, EventArgs e)
{
    MenuControl.MenuItemDataBound += new MenuEventHandler(MenuControl_MenuItemDataBound);
}

void MenuControl_MenuItemDataBound(object sender, MenuEventArgs e)
{
    if (SiteMap.CurrentNode != null)
    {
        if (SiteMap.CurrentNode.ParentNode.Url == e.Item.NavigateUrl)
        {
            e.Item.Selected = true;
        }
    }
 }
0 голосов
/ 11 июня 2019

Мое меню не привязано к данным, поэтому MenuItemDataBound никогда не запускается.Ниже мое решение, чтобы выделить родительский элемент меню, когда есть дочерние элементы и когда их нет:

Добавить StaticSelectedStyle-xxx в меню, как StaticSelectedStyle-BackColor="#757588"

Вызовите этот метод наPage_Load:

protected void SetSelectedMenuItem()
        {
            string pageViewed = this.Page.AppRelativeVirtualPath;

            foreach (MenuItem item in Menu.Items)
            {
                if (item.ChildItems.Count > 0)
                {
                    if (pageViewed == item.Value)
                    {
                        item.Selected = true;
                    }
                    else
                    {
                        foreach (MenuItem childItem in item.ChildItems)
                        {
                            if (pageViewed == childItem.Value)
                            {
                                if (childItem.Parent != null)
                                {
                                    childItem.Parent.Selected = true;
                                }
                            }
                        }
                    }
                }
                else
                {
                    if (pageViewed == item.Value)
                    {
                        item.Selected = true;
                    }
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...