Asp.net 2.0 Treeview 動態填充,並實現無限級樹,
資料庫表關鍵字段:
表: table1
type_id type_name per_type_id
0 根目錄 -1
1 子目錄 0
2 子目錄2 0
3 子子目錄 2
.
9 根目錄二 -1
C#代碼using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
public partial class tree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TreeView1.Nodes.Clear();
DataTable dt = tree_table();
DataView dv = new DataView(dt);
dv.RowFilter = "type_id = 0";
foreach (DataRowView drv in dv)
{
TreeNode node = new TreeNode();
node.Text = drv["type_name"].ToString();
node.Value = drv["type_id"].ToString();
node.NavigateUrl = "?s=" + drv["type_id"].ToString();
TreeView1.Nodes.Add(node);
AddChildNode(dt, node);
}
}
private DataTable tree_table()
{
//hooyesDataLink 為配置中資料連線字串鍵名
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["hooyesDataLink"]);
SqlDataAdapter sda = new SqlDataAdapter("select * from table1", con);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
遞迴以實現無限級樹#region 遞迴以實現無限級樹
private void AddChildNode(DataTable dt, TreeNode node)
{
DataView dv = new DataView(dt);//建立dt的表視圖
dv.RowFilter = "per_type_id = '" + node.Value + "'"; //過濾
foreach (DataRowView drv1 in dv)
{
TreeNode ChildNode = new TreeNode();
ChildNode.Text = drv1["type_name"].ToString();
ChildNode.Value = drv1["type_id"].ToString();
ChildNode.NavigateUrl = "?s=" + drv1["type_id"].ToString();
ChildNode.Expanded = true;//展開屬性為FALSE
node.ChildNodes.Add(ChildNode);
AddChildNode(dt, ChildNode);
}
}
#endregion
}
效果: