如何在asp.net中使用菜单控件从数据库创建动态菜单?

如何在asp.net中使用菜单控件从数据库创建动态菜单?,asp.net,recursion,menu,menuitem,Asp.net,Recursion,Menu,Menuitem,我想从数据库中创建一个菜单,并显示在菜单控件中 .aspx页面中的代码: <asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem" DynamicMenuItemStyle-CssClass="menuItem" runat="server"> 问题出在AddTopMenuItems方法中,它在Menu1.Ite

我想从数据库中创建一个菜单,并显示在菜单控件中

.aspx页面中的代码:

 <asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem"
                            DynamicMenuItemStyle-CssClass="menuItem" runat="server">
问题出在AddTopMenuItems方法中,它在Menu1.Items.AddnewMenuItem行显示未设置为对象实例的对象引用; 不知道为什么

以下是SQLSERVER2008 DepartmentMst中的数据:

DepartmentID  DepartmentName IsActive   DepartmentParentID
1               HR            1            NULL
2               IT            1            NULL
3            Operations    1                NULL
4            Desktop Engineer 1             2
5           Network Engineer  1             2
6           Employee Salary   1             1
当DepartmentParentID为NULL时,它是主菜单,如果不为NULL,则它是与其父ID相关的子节点

样品在这里


谢谢你的帮助

我怀疑您已将菜单控件放置在母版页的内容占位符中:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            <asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem"
                DynamicMenuItemStyle-CssClass="menuItem" runat="server" />
        </asp:ContentPlaceHolder>
ContentPlaceHolder控件用于定义母版页的一个区域,该区域可以用与母版页显示子页关联的另一页的内容替换

由于菜单将是从母版页继承的所有页面之间的共享控件,因此只需将菜单移动到内容占位符之外的任何位置,即可:

<asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem"
    DynamicMenuItemStyle-CssClass="menuItem" runat="server" />
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>

我怀疑您已将菜单控件放置在母版页的内容占位符中:

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            <asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem"
                DynamicMenuItemStyle-CssClass="menuItem" runat="server" />
        </asp:ContentPlaceHolder>
ContentPlaceHolder控件用于定义母版页的一个区域,该区域可以用与母版页显示子页关联的另一页的内容替换

由于菜单将是从母版页继承的所有页面之间的共享控件,因此只需将菜单移动到内容占位符之外的任何位置,即可:

<asp:Menu ID="Menu1" Orientation="horizontal" StaticMenuItemStyle-CssClass="menuItem"
    DynamicMenuItemStyle-CssClass="menuItem" runat="server" />
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>

请告诉我如何从母版页获取内容页中选定的菜单项。例如:如果部门是DesktopEngineer,那么我需要存储在数据库中的相应值?看看这篇文章-我在这里没有使用站点地图,而是从SQLServer表填充菜单…那么如何获取当前菜单项选定值的值?好的,这是一个与原始问题完全不同的问题。我建议发布一个新问题,我相信社区中的某个人会非常乐意帮助您。请告诉我如何从母版页获取内容页中选定的菜单项。例如:如果部门是DesktopEngineer,那么我需要存储在数据库中的相应值?看看这篇文章-我在这里没有使用站点地图,而是从SQLServer表填充菜单…那么如何获取当前菜单项选定值的值?好的,这与原来的问题完全不同。我建议发布一个新问题,我相信社区中的人会非常乐意帮助你