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应该是所对应的父菜单的id
txt 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);
}
}
}
}
效果
数据库设置
菜单效果