如何从数据库中创建动态Aspxmenu [英] how to create dynamic Aspxmenu from database

查看:422
本文介绍了如何从数据库中创建动态Aspxmenu的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

*的我对C#的工作。的*我想开发它包含菜单,但菜单项应当从数据库中生成的asp.net应用程序。我的内涵是,管理员可以通过工作只能在数据库中更改的菜单项,无需更改前端的任何方式。

**

 例如:网页包含菜单
   1.家庭
   2.关于我们
   3.联系我们

**

 所以,如果管理员想可以改变关于我们的菜单给我们的客户菜单,因此管理员只需要在数据库中修改不碰前端的任何方式。  任何小的帮助也AP preciated。
  提前致谢。

贝娄是我的SQL脚本:

 使用[罗斯文]

/ ******对象:表[DBO] [Security_Module_Menu]脚本日期:08/05/2010 12时56分02秒****** /
SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

CREATE TABLE [DBO]。[Security_Module_Menu](
    [Menu_ID] [INT] NOT NULL,
    [PARENTID] [INT] NULL,
    [菜单名] [为nvarchar(500)NULL,
    [Menu_Description] [为nvarchar(500)NULL,
    [Menu_Type] [TINYINT] NULL,
    [Tree_Level] [TINYINT] NULL,
    [Target_URL] [nvarchar的(200)NULL,
    [IMAGE_URL] [为nvarchar(200)NULL,
    [工具提示] [为nvarchar(50)NULL,
    [Has_Charge] [位] NULL,
    [IS_ACTIVE] [位] NULL,
    [Active_Date] [SMALLDATETIME] NULL,
    [Record_Status] [TINYINT] NULL,
    [Record_Action_Type] [TINYINT] NULL,
 约束[PK_Security_Module_Menu] PRIMARY KEY CLUSTERED

    [Menu_ID] ASC
)和(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON)ON [PRIMARY]
)ON [PRIMARY]

INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(1,0,N'Form',N'Form',1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(2,0,N'Home',N'Home',1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(3,0,N'About',N'About',1,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(4,1,N'Background',N'Background',1,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(5,1,N'Detail',N'Detail',1,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(6,3,N'FAQ',N'FAQ',1,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(7,3,N'Forum',N'Forum',1,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(8,3,N'ContactUs',N'ContactUs',1,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(9,2,N'Report_User',N'Report_User',2,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(10,2,N'Report_Login',N'Report_Login',2,2,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(11,图5,N'Admin_Detail',N'Admin_Detail',1,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
INSERT [DBO]。[Security_Module_Menu]([Menu_ID],[PARENTID],[菜单名],[Menu_Description],[Menu_Type],[Tree_Level],[Target_URL],[IMAGE_URL],[工具提示],[Has_Charge],[ IS_ACTIVE],[Active_Date],[Record_Status],[Record_Action_Type])值(12,图5,N'User_Detail',N'User_Detail',1,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL )
Menu_Type = 1 =表单
Menu_Type = 2 =报告PARENTID = 0 = MainMenuItemTree_Level = 1 = MainMenuItem。
Tree_Level = 2 = SubMenuItem。
Tree_Level = 3 =子SubMenuItem。

在服务器端的,AspxMenu如何使用XML文件绑定。其实我需要
1)创建一个使用LINQ的XML文件。
2),那么我需要与AspxMenu这个文件绑定。

使用的的LINQ 我想创建像波纹管.xml文件:

 的XElement XML =新的XElement(利用这项
                  从db.Security_Module_MenusÇ
                  其中(c.ParentID == 0)
                  排序依据c.Menu_ID
                  选择新的XElement(项目,
                            新XAttribute(文本,c.Menu_Name),新XAttribute(NavigateUrl,c.Target_URL)
                            )
                  );
**填写AspxMenu像波纹管:**
            XmlDataSource1.DataFile = @C:\\ contacts.xml
        XmlDataSource1.XPath =利用这项/项目;

我需要帮助创建XML file.Help我创建的波纹管标准基础xml文档

  Menu_Type = 1 =表单
    Menu_Type = 2 =报告    PARENTID = 0 = MainMenuItem    Tree_Level = 1 = MainMenuItem。
    Tree_Level = 2 = SubMenuItem。
    Tree_Level = 3 =子SubMenuItem。


解决方案

在设计上,ASPxMenu支持绑定只有分层数据源(那些实现了IHierarchicalDataSource界面 - 例如XmlDataSource控件,SiteMapDataSource时)。通过它的DataSourceID和DataSource属性

如果你要绑定一个ASPxMenu控制数据表,一些额外的编码是必要的。

我们已经发布说明我们如何控制ASPxMenu可以动态地根据数据库中的信息来创建一个教程:
HTTP://www.devex$p$pss.com/Support /Center/e/E49.aspx

本教程是连接到以下问题问题项目的一个简化版本:
HTTP://www.devex$p$pss.com/Support /Center/p/DQ42250.aspx

*I work on C#.*I want to develop asp.net application which contains menu but menu items should be generated from database. My intension is that Administrator can change menu items by working only on database, no need to change front end any how.

**

For example: Web page contains Menu as 
   1. Home
   2. About Us
   3. Contact Us

**

  So if Administrator wants can change  About Us menu to Our Clients menu, so administrator only need to modify in database don't touch front end any how.

  Any small help also appreciated.
  Thanks in advance.

Bellow is My SQL script :

USE [Northwind]
GO
/****** Object:  Table [dbo].[Security_Module_Menu]    Script Date: 08/05/2010 12:56:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Security_Module_Menu](
    [Menu_ID] [int] NOT NULL,
    [ParentID] [int] NULL,
    [Menu_Name] [nvarchar](500) NULL,
    [Menu_Description] [nvarchar](500) NULL,
    [Menu_Type] [tinyint] NULL,
    [Tree_Level] [tinyint] NULL,
    [Target_URL] [nvarchar](200) NULL,
    [Image_URL] [nvarchar](200) NULL,
    [ToolTips] [nvarchar](50) NULL,
    [Has_Charge] [bit] NULL,
    [Is_Active] [bit] NULL,
    [Active_Date] [smalldatetime] NULL,
    [Record_Status] [tinyint] NULL,
    [Record_Action_Type] [tinyint] NULL,
 CONSTRAINT [PK_Security_Module_Menu] PRIMARY KEY CLUSTERED 
(
    [Menu_ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (1, 0, N'Form', N'Form', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (2, 0, N'Home', N'Home', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (3, 0, N'About', N'About', 1, 1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (4, 1, N'Background', N'Background', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (5, 1, N'Detail', N'Detail', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (6, 3, N'FAQ', N'FAQ', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (7, 3, N'Forum', N'Forum', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (8, 3, N'ContactUs', N'ContactUs', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (9, 2, N'Report_User', N'Report_User', 2, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (10, 2, N'Report_Login', N'Report_Login', 2, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (11, 5, N'Admin_Detail', N'Admin_Detail', 1, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
INSERT [dbo].[Security_Module_Menu] ([Menu_ID], [ParentID], [Menu_Name], [Menu_Description], [Menu_Type], [Tree_Level], [Target_URL], [Image_URL], [ToolTips], [Has_Charge], [Is_Active], [Active_Date], [Record_Status], [Record_Action_Type]) VALUES (12, 5, N'User_Detail', N'User_Detail', 1, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)


Menu_Type=1=Form
Menu_Type=2=Report

ParentID=0=MainMenuItem

Tree_Level=1=MainMenuItem.
Tree_Level=2=SubMenuItem.
Tree_Level=3=Sub-SubMenuItem.

on server side ,AspxMenu how to bind with XML file .Actually i need 1)Create XML file using the Linq. 2)Then i need to bind this file with AspxMenu.

Using the Linq i want to create .xml file like bellow:

 XElement xml = new XElement("MyMenu",
                  from c in db.Security_Module_Menus
                  where (c.ParentID == 0)
                  orderby c.Menu_ID
                  select new XElement("Item",
                            new XAttribute("Text", c.Menu_Name), new XAttribute("NavigateUrl",c.Target_URL)


                            )
                  );
**Fill AspxMenu like bellow:**
            XmlDataSource1.DataFile = @"C:\contacts.xml";
        XmlDataSource1.XPath = "MyMenu/Item";

I need help to create XML file.Help me to create Xml file on basis of bellow criteria

    Menu_Type=1=Form
    Menu_Type=2=Report

    ParentID=0=MainMenuItem

    Tree_Level=1=MainMenuItem.
    Tree_Level=2=SubMenuItem.
    Tree_Level=3=Sub-SubMenuItem.

解决方案

By design, the ASPxMenu supports binding only to hierarchical data sources (those that implement the IHierarchicalDataSource interface - e.g. XmlDataSource, SiteMapDataSource) through its DataSourceID and DataSource properties.

If you need to bind an ASPxMenu control to a data table, some extra coding is required.

We've posted a tutorial illustrating how our ASPxMenu control can be created dynamically based on database information: http://www.devexpress.com/Support/Center/e/E49.aspx

This tutorial is a simplified version of a project attached to the following question issue: http://www.devexpress.com/Support/Center/p/DQ42250.aspx

这篇关于如何从数据库中创建动态Aspxmenu的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆