心如止水
站在十字路口 向左右 还是向右?

menu1.bmp

  11:创建一个数据库并创建表Base_Menu
  2CREATE TABLE [dbo].[Base_Menu](
  3    [menuid] [int] IDENTITY(1,1) NOT NULL,
  4    [menunum] [int] NOT NULL,
  5    [Name] [varchar](50) NOT NULL CONSTRAINT [DF_Base_Menu_MenuName]  DEFAULT (''),
  6    [URL] [varchar](50) NOT NULL CONSTRAINT [DF_Base_Menu_Reserve]  DEFAULT (''),
  7    [Parentid] [int] NULL,
  8    [LogoUrl] [varchar](50) NULL,
  9 CONSTRAINT [PK__Base_Menu__69C6B1F5] PRIMARY KEY CLUSTERED 
 10(
 11    [menuid] ASC
 12)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 13 CONSTRAINT [QU_Base_Menu_menunum] UNIQUE NONCLUSTERED 
 14(
 15    [menunum] ASC
 16)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
 17) ON [PRIMARY]
 18
 19GO
 20
 21
 222:创建sql过程查找上级目录
 23ALTER FUNCTION [dbo].[IsMenuParent](@ParentID INT, @Menuid INT)
 24RETURNS TINYINT
 25BEGIN
 26    DECLARE @Ret TINYINT
 27    DECLARE @P INT
 28    WHILE @Ret IS NULL  ----@Ret是返回值变量
 29    BEGIN
 30        SELECT @P = ParentID FROM base_menu WHERE Menuid = @Menuid
 31        IF @P = @ParentID
 32        BEGIN --如果父节点等于@ParentID,就表示@ParentID是@TypeID的父节点,所以就将返回值设置成1
 33        SET @Ret = 1
 34        END
 35        ELSE
 36        BEGIN
 37        IF @P = 0 OR @P IS NULL
 38    BEGIN --如果父节点等于-1,就表示已经查找到根节点,再也没有数据查找了,也就是说最终没找到,所以将返回值设成0
 39    SET @Ret = 0
 40    END
 41    ELSE
 42    BEGIN --如果父节点也不等于-1,表示当前没有找到根节点,还要继续查找父节点的父节点,所以将@P的值赋给@TypeID来继续查找
 43                SET @Menuid = @P
 44            END
 45        END
 46    END
 47    RETURN @Ret
 48END 
 49
 503:在web.config配置文件中写:
 51 </connectionStrings>
 52 <appSettings>
 53        <add key="conStr" value="server=192.200.188.208;uid=sa;pwd=;database=数据库名字"/>
 54    </appSettings>
 55
 564:在创建一个SqlHelper类做超作数据库的
 57using System;
 58using System.Data.SqlClient;
 59using System.Data;
 60using System.Collections;
 61using System.Configuration.Assemblies;
 62using System.Configuration;
 63namespace SqlData
 64{
 65    public class SqlHelper
 66    {
 67        /// <summary>
 68        ///通过连接数据库的方法ConfigurationSettings.AppSettings()获取字符传为的键:conStr
 69        /// </summary>

 70        public  static readonly string ConStr = ConfigurationSettings.AppSettings["conStr"].ToString();
 71        public static void FillDataTable(string sql, DataTable dt, params  SqlParameter[] param)
 72        {
 73            SqlConnection con = new SqlConnection(ConStr);
 74            if (con.State == ConnectionState.Closed)
 75            {
 76                con.Open();
 77            }

 78            SqlDataAdapter ada = new SqlDataAdapter(sql, con);
 79            foreach (SqlParameter p in param)
 80                ada.SelectCommand.Parameters.Add(p);
 81            ada.Fill(dt);
 82            if (con.State == ConnectionState.Open)
 83            {
 84                con.Close();
 85                con.Dispose();
 86            }

 87          }

 88     }

 89}

 90
 91
 923:在再另一个ConMenuSql类中写SQL语句
 93 /// <summary>
 94 /// 导航采单
 95 /// </summary>

 96public const string SELECT_MENU_NAVIGATION_MENUS = "SELECT M.* FROM  BASE_MENU AS M INNER JOIN BASE_MENU AS P ON  DBO.[ISMENUPARENT](M.MENUID,P.MENUID) =1 OR M.MENUID=@0 WHERE P.MENUID=@1 AND P.NAME=@2";
 97
 98
 994:创建一个SelectHouseInfo类写如下方法:
100using System;
101using System.Data;
102using System.Configuration;
103using System.Web;
104using System.Web.Security;
105using System.Web.UI;
106using System.Web.UI.WebControls;
107using System.Web.UI.WebControls.WebParts;
108using System.Web.UI.HtmlControls;
109using System.Drawing;
110
111/// <summary>
112/// SelectHouseInfo 的摘要说明
113/// </summary>

114public class SelectHouseInfo
115{
116  public SelectHouseInfo()
117    {
118
119    }

120
121    /// <summary>
122    ///定义方法做导航
123    /// 有多少级就展开多少级
124    /// </summary>
125    /// <param name="typeid"></param>
126    /// <param name="typesname"></param>

127    public void BuildNavigationMenu(Menu menuname, int Navigationselfid, int Navigationid, string NavigationName)
128    {
129
130        DataTable Menudt = GetSelectAllNavigationMenus(Navigationselfid, Navigationid, NavigationName);
131        MenuItem lii;
132        for (int i = 0; i < Menudt.Rows.Count; i++)
133        {
134            lii = new MenuItem();
135            lii.Text = Menudt.Rows[i]["Name"].ToString();
136            //  lii.NavigateUrl = Menudt.Rows[i]["URL"].ToString();
137            lii.Value = Menudt.Rows[i]["menuid"].ToString();
138            MenuItem items = new MenuItem();
139            items.ImageUrl = "~/images/move_right.gif";
140            items.Selectable = false//设置一个值不能单机该项
141            menuname.Items.Add(items);
142            items.ChildItems.Remove(items);
143            menuname.Items.Add(lii);
144            lii.Selectable = false;
145        }

146    }

147
148      /// <summary>
149       /// 导航菜单
150       /// </summary>
151       /// <param name="Navigationid"></param>
152       /// <param name="NavigationName"></param>
153       /// <returns></returns>

154
155       public DataTable GetSelectAllNavigationMenus(int NavigationSelfid, int Navigationid, string NavigationName)
156       {
157           DataTable dt = new DataTable();
158           SqlHelper.FillDataTable(ConMenuSql.SELECT_MENU_NAVIGATION_MENUS, dt, new SqlParameter("@0", NavigationSelfid),
159               new SqlParameter("@1", Navigationid),
160               new SqlParameter("@2", NavigationName));
161           return dt;
162       }

163}

164
1655:直接在界面上拖一个Menu控件
166然后在界面类里load事件里写如下代码:
167   protected void Page_Load(object sender, EventArgs e)
168    {
169        if (!this.IsPostBack)
170        {
171  int navigationid = Convert.ToInt32(Request["menuid"].ToString()); //传过来的页面ID也就是在数据库中出现的ID
172                string navigationname = Server.HtmlDecode(Request["MenuName"].ToString());///传过来的页面名字
173                selecthouseinfo.BuildNavigationMenu(Menu1,navigationid, navigationid, navigationname); ///调用SelectHouseInfo类中的BuildNavigationMenu这个方法进行传参数
174}

175}

176


posted on 2007-12-22 17:02  笨笨熊(梦幻雨儿)  阅读(576)  评论(0编辑  收藏  举报