asp.net Menu控制元件 SQLServer實現動態多級選單

NO IMAGE

首先是資料表的設計


其中treeId指的是該選單項的父ID,如果treeId為0.表示該選單項為根選單項,否則表示他為某選單項的子選單,比如id為2的項,他的父節點是1.則他是張三的子選單,而張三是根選單,position只用於根選單項,用於控制顯示的順序。
往網頁裡拖入一個menu控制元件,然後新增程式碼
複製程式碼 程式碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data.ProviderBase;
public partial class _Default : System.Web.UI.Page
{
public int treeID;
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection CN = new SqlConnection(“server=.;Trusted_Connection=SSPI;database=MENUDB”); //MENUDB是資料庫名
//設定資料庫操作命令
CN.Open();
SqlCommand Scmd = new SqlCommand(“select * from TB_MENU where treeId=0 order by position”, CN); //選出根選單
SqlDataReader odr = Scmd.ExecuteReader();
while (odr.Read()) //迴圈讀取
{
MenuItem menuNode = new MenuItem();
menuNode.Text = odr[“names”].ToString();
menuNode.Value = odr[“id”].ToString();
menuNode.Enabled = true;
menuNode.NavigateUrl = odr[“page”].ToString();
Menu1.Items.Add(menuNode); //新增到根選單
treeID = Convert.ToInt16(odr[“id”].ToString());
addchildmenu(menuNode);
}
//關閉資料庫連線
Scmd.Connection.Close();
}
protected void addchildmenu(MenuItem pnode) //新增子選單
{
SqlConnection CN = new SqlConnection(“server=.;Trusted_Connection=SSPI;database=MENUDB”);
?
//設定資料庫操作命令
CN.Open();
SqlCommand Scmd1 = new SqlCommand(“select * from TB_MENU where treeID=” treeID “”, CN);
?
SqlDataReader odr = Scmd1.ExecuteReader();
while (odr.Read())
{
MenuItem menuNode = new MenuItem();
menuNode.Text = odr[“names”].ToString();
menuNode.Value = odr[“id”].ToString();
menuNode.Enabled = true;
menuNode.NavigateUrl = odr[“page”].ToString();
pnode.ChildItems.Add(menuNode); //為當前選單項新增子選單
treeID = Convert.ToInt16(odr[“id”].ToString());
addchildmenu(menuNode); //迴圈新增子選單
}
//關閉資料庫連線
Scmd1.Connection.Close();
}
}

最終效果如下圖

您可能感興趣的文章:

ASP.NET伺服器端控制元件RadioButtonList,DropDownList,CheckBoxList的取值、賦值用法asp.net 使用者控制元件讀取以及賦值asp.net GridView控制元件中模板列CheckBox全選、反選、取消asp.net jquery滾動滾動條載入資料的下拉控制元件Asp.net 選單控制元件簡潔版ASP.NET 頁面中動態增加的控制元件、新增事件asp.net Datalist控制元件實現分頁功能asp.net fileupload控制元件上傳檔案與多檔案上傳asp.net分頁控制元件AspNetPager的樣式美化asp.net 動態生成控制元件並獲取其值ASP.NET動態新增控制元件一例asp.net動態載入使用者控制元件,關於後臺新增、修改的思考asp.net顯示圖片到指定的Image控制元件中 具體實現asp.net簡單頁面控制元件賦值實現方法