Asp.net中动态Menu的实践

来源:互联网 发布:大连锐鑫软件 编辑:程序博客网 时间:2024/05/16 15:48


1、在页界中添加MENU控件;

<asp:Menu ID="Menu1" runat="server" StaticSubMenuIndent="10px" Orientation="Horizontal">
Orientation="Horizontal"  //保证菜单为水平排列
2、在数据库中建立Menu表,以便存放Menu信息
create table menu(id int primary key identity(1,1), //主键pid int,                          //pid为0为菜单的一级,子菜单的pid应该是所对应的父菜单的idtxt nvarchar(50),                 //菜单名称mtarget nvarchar(50),             //菜单点击后对应的窗体,可以为"_self","_bland"或指定frame或iframe的名称url nvarchar(200))
3、页面所对应的程序
<pre class="csharp" name="code">using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data;using System.Data.SqlClient;public partial class Content : System.Web.UI.Page{    protected static int ParentID = 0;    protected void Page_Load(object sender, EventArgs e)    {        Label1.Text = Session["Username"].ToString();        if(!Page.IsPostBack)        {            DataRow[] rows = DSMenu.Tables[0].Select("pid="+ParentID);            if (rows.Length > 0)            {                for (int i = 0; i < rows.Length; i++)                {                    MenuItem pNode = new MenuItem();                    pNode.Value = rows[i]["id"].ToString();                    pNode.Text = rows[i]["txt"].ToString();                    pNode.NavigateUrl = rows[i]["url"].ToString();                    pNode.Enabled = true;                    pNode.Target = rows[i]["mtarget"].ToString();                    Menu1.Items.Add(pNode);                    int pid = Convert.ToInt32(rows[i]["id"]);                    this.FillMenu(pNode, pid);                }            }        }    }    protected DataSet _dsmenu = null;    protected DataSet DSMenu    {        get        {            if (_dsmenu == null)            {                Db MenuC = new Db();                MenuC.DbOpen();                SqlCommand Cmd = new SqlCommand("SELECT * FROM MENU ", MenuC.cOn);                SqlDataAdapter da = new SqlDataAdapter(Cmd);                DataSet ds = new DataSet();                da.Fill(ds);                MenuC.DbClose();                _dsmenu = ds;            }            return _dsmenu;        }    }    protected void FillMenu(MenuItem pNode,int pid)    {        DataRow[] rows = DSMenu.Tables[0].Select("pid="+pid+"");        if (rows.Length > 0)        {            for (int i = 0; i < rows.Length; i++)            {                MenuItem cNode = new MenuItem();                cNode.Value = rows[i]["id"].ToString();                cNode.Text = rows[i]["txt"].ToString();                cNode.NavigateUrl = rows[i]["url"].ToString();                cNode.Enabled = true;                cNode.Target = rows[i]["mtarget"].ToString();                pNode.ChildItems.Add(cNode);                pid = Convert.ToInt32(rows[i]["id"]);                FillMenu(cNode, pid);            }        }    }}

效果

数据库设置

菜单效果




0 0
原创粉丝点击