【问题标题】:Generate Menu from the database using asp:Menu control programatically not working使用 asp 从数据库生成菜单:菜单控件以编程方式不起作用
【发布时间】:2012-04-03 03:38:52
【问题描述】:

我正在尝试使用以下示例从数据库创建动态菜单 http://www.dotnetfunda.com/articles/article1477-how-to-create-a-menu-in-aspnet-using-aspmenu-control.aspx

我修改了下面发布的代码仅显示父菜单但不显示子菜单,我确定在调试代码时出现问题我注意到它没有进入 foreach (dvMenu 中的 DataRowView 行) of AddChildItems Function

我的 SQL 查询是这样的

Select PageID, PageName,PageInternalLinkURL, PageInheritance from pg_Pages

我正在使用的代码 sn-p

<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 函数时,它只是对循环进行技巧并且不显示子行中的任何内容。

输出当前代码

首页 |第2页|第 3 页 |第4页

【问题讨论】:

  • 可能问题出在DataView上:DataView dvMenu = new DataView(table); dvMenu.RowFilter = "PageInheritance is NULL";
  • 我解决了它是由于sql查询错误...

标签: c# asp.net webforms aspmenu-control


【解决方案1】:

Answer 代码或逻辑没有任何问题,只是 SQL 查询在修复查询后获取了错误的数据,它就像魅力一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 2013-09-23
    • 2013-07-04
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    相关资源
    最近更新 更多