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);
}
}
}
}
效果
數據庫設置
菜單效果