一种将顺序结构数据绑定到树形结构的的方法。
代码:
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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable data = CreateDataTable();
BindTree(data);
}
}
/// <summary>
/// 将数据绑到treeview的根节点上。
/// </summary>
/// <param name="tableData"></param>
private void BindTree(DataTable tableData)
{
DataRow[] list = tableData.Select("pid='0'");
DataRow rootRow = list[0];
TreeNode rootNode = new TreeNode();
rootNode.Text = rootRow["name"].ToString();
rootNode.Value = rootRow["id"].ToString();
this.TreeView1.Nodes.Add(rootNode);
BindTreeNode(tableData, rootNode, rootNode.Value);
}
/// <summary>
/// 将数据绑到TreeNode上。
/// </summary>
/// <param name="tableData"></param>
/// <param name="treeNode"></param>
/// <param name="filter"></param>
private void BindTreeNode(DataTable tableData , TreeNode treeNode, string filter)
{
DataRow[] list = tableData.Select("pid='"+filter+"'");
for (int i = 0; i < list.Length; i++)
{
TreeNode node = new TreeNode();
node.Text = list[i]["name"].ToString();
node.Value = list[i]["id"].ToString();
treeNode.ChildNodes.Add(node);
BindTreeNode(tableData, node, node.Value);
}
}
/// <summary>
/// 模拟数据。
/// </summary>
/// <returns></returns>
private DataTable CreateDataTable()
{
DataTable table = new DataTable();
DataColumn col1 = new DataColumn("name");
DataColumn col2=new DataColumn("pID");
DataColumn col3 = new DataColumn("ID");
table.Columns.Add(col1);
table.Columns.Add(col2);
table.Columns.Add(col3);
DataRow row1 = table.NewRow();
row1["name"] = "张三";
row1["pid"] = "0";
row1["id"] = "1";
table.Rows.Add(row1);
DataRow row2 = table.NewRow();
row2["name"] = "李四";
row2["pid"] = "1";
row2["id"] = "3";
table.Rows.Add(row2);
DataRow row3 = table.NewRow();
row3["name"] = "王二";
row3["pid"] = "1";
row3["id"] = "4";
table.Rows.Add(row3);
DataRow row4 = table.NewRow();
row4["name"] = "赵五";
row4["pid"] = "3";
row4["id"] = "6";
table.Rows.Add(row4);
DataRow row5 = table.NewRow();
row5["name"] = "赵六";
row5["pid"] = "3";
row5["id"] = "7";
table.Rows.Add(row5);
return table;
}
}