第一步 建表
create table TreeTest
(
id int identity(1,1) primary key ,
treeId int, --數形結構 1,代表根目錄 2,代表根的下一級目錄,3代表根的子目錄的子目錄。。依次類推
names varchar(200), --url傳的參數值
page varchar(200) --頁面
)
--添加測試資料
insert into TreeTest select 1,'張三','default.aspx'
union all select 2,'李四','default1.aspx'
union all select 2,'王五','default2.aspx'
union all select 2,'唐僧','default3.aspx'
union all select 3,'八戒','default4.aspx'
union all select 3,'八戒','default5.aspx'
第二步 在頁面寫如下代碼
<body>
<form id="form1" runat="server">
<div>
<asp:Menu ID="Menu1" runat="server">
</asp:Menu>
</div>
</form>
</body>
第三步 在頁面後台寫如下代碼(注意不要整個複製,因為類名不一樣)
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;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
//Menu1.Items.Add(i1);
//i1.ChildItems.Add(i2);
// 在此處放置使用者代碼以初始化頁面
SqlConnection CN = new SqlConnection("server=資料名串連地址;User id=;pwd=;database=tempdb");
//初始化連接字串
CN.Open();
//添加命令,從資料庫中得到資料
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = CN;
sqlCmd.CommandText = "select * from TreeTest";
sqlCmd.CommandType = CommandType.Text;
SqlDataAdapter adp = new SqlDataAdapter(sqlCmd);
adp.Fill(ds);
//調用遞迴函式,完成樹形結構的產生
//tn2=AddTree(0, (TreeNode)null);
//TreeView1.Nodes.Add(tn2);
AddTree(1, (MenuItem)null);
}
public void AddTree(int ParentID, MenuItem pNode)
{
string url1;
string url2;
string url3;
string url4;
MenuItem mi = new MenuItem();
//TreeNode tn1 = new TreeNode();
DataView dvTree = new DataView(ds.Tables[0]);
//過濾ParentID,得到當前的所有子節點
dvTree.RowFilter = "treeId = " + ParentID;
foreach (DataRowView Row in dvTree)
{
if (pNode == null)
{ //'?添加根節點
url1 = Row["names"].ToString();
url2 = Row["page"].ToString() + "?name=" + url1;
mi.Text = url1;
mi.NavigateUrl = url2;
mi.Target = "_blank";
// tn1.Text = url1;
// tn1.NavigateUrl = url2;
Menu1.Items.Add(mi);
// TreeView1.Nodes.Add(tn1);
AddTree(Int32.Parse(Row["id"].ToString()) + 1, mi); //再次遞迴
}
else
{ //添加當前節點的子節點
// TreeNode tn2 = new TreeNode();
MenuItem m2 = new MenuItem();
url3 = Row["names"].ToString();
url4 = Row["page"].ToString() + "?name=" + url3;
m2.Text = url3;
m2.NavigateUrl = url4;
m2.Target = "_blank";
//tn2.Text = url3;
//tn2.NavigateUrl = url4;
pNode.ChildItems.Add(m2); //修改的地方
// pNode.ChildNodes.Add(tn2);
AddTree(Int32.Parse(Row["id"].ToString()) + 1, m2); //再次遞迴
}
}
}
}