資料庫驅動的asp.net treeview

iDotNetSpace發表於2010-05-10

之前給研究生部網站做後臺時用到了一個基於js和asp 的treeview,可能我比較菜,當時為了實現它並能夠根據不同使用者許可權顯示不同選單,除錯了老半天。

前段時間給學校做了一個研究生選宿舍的小程式,用asp.net 做的,順便做了個基於資料庫驅動的treeview,當然也參考了這裡的一些思想。總之就是

一個遞迴的過程,支援無限級分類。

nodestable表結構

NodeID(節點ID) NodeName(節點名稱) Link(節點超連結) ParentID(父節點ID)

程式碼如下。有時間再加上許可權的控制.

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt 1 public partial class _Default : System.Web.UI.Page
2 {
3 private DataView dataview = null;
4 protected void Page_Load(object sender, EventArgs e)
5 {
6 SqlConnection conn = new
7 SqlConnection(ConfigurationManager.ConnectionStrings["nodestable"].ConnectionString);
8 SqlCommand cmd = new SqlCommand("select * from nodestable", conn);
9 SqlDataAdapter sda = new SqlDataAdapter();
10 sda.SelectCommand = cmd;
11 DataSet ds = new DataSet();
12 sda.Fill(ds, "nodestable");
13 dataview = ds.Tables["nodestable"].DefaultView;
14 conn.Close();
15 AddTree(-1, (TreeNode)null);
16 //-------------------------------------------------
17  
18 }
19 public void AddTree(int parentId, TreeNode pNode)
20 {
21 dataview.RowFilter = "parentId=" + parentId;
22 foreach (DataRowView row in dataview)
23 {
24 TreeNode Node = new TreeNode();
25 if (pNode == null)
26 {
27 Node.Text = "" + row["NodeName"].ToString() + "";
28 Node.Value = row["NodeID"].ToString();
29 mytreeview.Nodes.Add(Node);
30 Node.Expanded = true;
31 AddTree(Int32.Parse(row["NodeId"].ToString()), Node);
32 }
33 else
34 {
35 Node.Text = "" + row["NodeName"].ToString() + "";
36 Node.Value = row["NodeID"].ToString();
37 pNode.ChildNodes.Add(Node);
38 Node.Expanded = true;
39 AddTree(Int32.Parse(row["NodeID"].ToString()), Node);
40 }
41 }
42 }
43 }
44  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-662344/,如需轉載,請註明出處,否則將追究法律責任。

相關文章