Создать меню из базы данных, используя asp: Управление меню программно не работает - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь создать динамические меню из базы данных, используя следующий пример http://www.dotnetfunda.com/articles/article1477-how-to-create-a-menu-in-aspnet-using-aspmenu-control.aspx

Я изменил Код, который размещен ниже, только отображает родительское меню, но не показывает дочернее меню, яЯ уверен, что что-то не так при отладке кода я заметил, что он не входит в foreach (строка DataRowView в dvMenu) из AddChildItems Функция

Мой SQL-запрос похож на

Select PageID, PageName,PageInternalLinkURL, PageInheritance from pg_Pages

Фрагмент кода, который я использую

<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" >

// I am convert ds to table for now.
DataTable table = dsMenu.Tables[0]; ;
DataView dvMenu = new DataView(table);
dvMenu.RowFilter = "PageInheritance is NULL";
foreach (DataRowView row in dvMenu)
{
MenuItem menuItem = new MenuItem(row["PageName"].ToString(), row["PageId"].ToString());
menuItem.NavigateUrl = row["PageURL"].ToString() + "?PageId=" + row["PageId"] + "&Language=" + sLangCode;
Menu1.Items.Add(menuItem);
AddChildItems(dvMenu.Table, menuItem);
}

//Function to look for child menu
    private static void AddChildItems(DataTable table, MenuItem menuItem)
    {
        DataView viewItem = new DataView(table);
        viewItem.RowFilter = "PageInheritance = " + menuItem.Value;
        foreach (DataRowView childView in viewItem)
        {
            MenuItem childItem = new MenuItem(childView["PageName"].ToString(),
            childView["PageId"].ToString());
            childItem.NavigateUrl = childView["PageURL"].ToString();
            menuItem.ChildItems.Add(childItem);
            AddChildItems(table, childItem);
        }
    }

Я не уверен, что делаю неправильно.Основываясь на моей базе данных, она должна показывать мне дочерние меню для строки Page2 .когда функция AddChildItems вызывается для дочерней строки соответствия, она просто обрабатывает цикл и не показывает ничего из дочерних строк.

ВЫХОД с текущим кодом

HOME |Page2 |Page3 |Page4

1 Ответ

0 голосов
/ 04 апреля 2012

Ответ Нет ничего плохого в коде или логике. Это был SQL-запрос, который получал неверные данные после исправления запроса, он работал как charm.

...