先來看看效果,基本上就是這樣的。
所謂樹,無非就是2點,第一個:根節點,第二:葉子節點,其中葉子節點中還可能有葉子節點,但是根節點始終隻有一個。
下面貼上 各部分的代碼
1.PAGE_LOAD載入事件。
protected void Page_Load(object sender, EventArgs e)
{
BindTree(); //綁定樹
}
2.BindTree方法。
private void BindTree()
{
DataSet ds = new DataSet(); //這裡的DS裡不存在資料,具體情況請大家自己具體考慮,修改代碼
TreeView1.Nodes.Clear();
AddTree("-1", (TreeNode)null,ds);
TreeView1.Nodes[0].Expanded = true;
}
3.AddTree方法,遞歸添加樹。
/*其中ds對應的是一個實體類Model,裡面的IndexName,IndexID等,都是對應着資料庫裡的相應字段是以我們在使用這個方法時前,必須先得到相對應的有具體意義的DataSet*/
/// <summary>
/// 遞歸樹
/// </summary>
/// <param name="ParentID">目前節點父節點ID</param>
/// <param name="pNode"></param>
/// <param name="ds"></param>
private void AddTree(string ParentID, TreeNode pNode,DataSet ds)
{
DataView dvTree = new DataView(ds.Tables[0]); //用DataView來模拟DataTable,因為DV是虛拟的表,是以可以提高效率
foreach (DataRowView Row in dvTree)
{
TreeNode node = new TreeNode();
if (pNode == null)
{ //添加根節點
node.Text = Row["IndexName"].ToString();
node.Value = Row["IndexID"].ToString();
if (Row["IndexClass"].ToString() == "0")
{
node.NavigateUrl = "IndexInfo1.aspx?IndexID=" + node.Value;
}
else
{
node.NavigateUrl = "IndexInfo2.aspx?IndexID=" + node.Value;
}
node.Target = "mainFrame";
node.Expanded = false;
TreeView1.Nodes.Add(node); //添加根節點
AddTree(Row["IndexID"].ToString(), node,ds); //遞歸,添加子節點,這段遞歸是必須的,不然隻會添加根節點,而進不到下面的else語句,pNode在TreeView第二次執行以後都是不為空的,是以會一直跳到執行ELSE語句裡的内容。
}
else
{ //添加目前節點的子節點
node.Text = Row["IndexName"].ToString();
node.Value = Row["IndexID"].ToString();
node.ToolTip = node.Text;
if (Row["IndexClass"].ToString() == "0" || Row["IndexParentID"].ToString() == "-1")
{
node.NavigateUrl = "IndexInfo1.aspx?IndexID=" + node.Value;
}
else
{
node.NavigateUrl = "IndexInfo2.aspx?IndexID=" + node.Value;
}
node.Target = "Frame1"; //某一個節點指向的一個IFRAME,裡面可以是這個節點下的具體内容。
//node.NavigateUrl = Request.Url.LocalPath + "?OrgID=" + Row["OrgID"].ToString();
node.Expanded = false;
pNode.ChildNodes.Add(node); //pNode為父節點,把Node作為子節點添加進去
AddTree(Row["IndexID"].ToString(), node,ds); //遞歸添加子節點
}
}
}
作者:
KMSFan
出處:http://www.cnblogs.com/kmsfan
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
歡迎大家加入KMSFan之家,以及通路我的優酷空間!