146 lines
4.0 KiB
C#
146 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using System.Data;
|
|
using System.Text;
|
|
|
|
namespace ExtAspNet.Examples.data
|
|
{
|
|
public partial class tree_auto_leaf_identification : PageBase
|
|
{
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
LoadData();
|
|
}
|
|
}
|
|
|
|
private void LoadData()
|
|
{
|
|
DataTable table = CreateDataTable();
|
|
|
|
DataSet ds = new DataSet();
|
|
ds.Tables.Add(table);
|
|
ds.Relations.Add("TreeRelation", ds.Tables[0].Columns["Id"], ds.Tables[0].Columns["ParentId"]);
|
|
|
|
foreach (DataRow row in ds.Tables[0].Rows)
|
|
{
|
|
if (row.IsNull("ParentId"))
|
|
{
|
|
// For first tree.
|
|
ResolveTree(row, Tree1.Nodes);
|
|
|
|
// For second tree(much simpler).
|
|
ResolveTreeAutoLeaf(row, Tree2.Nodes);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ResolveTree(DataRow dataRow, TreeNodeCollection nodes)
|
|
{
|
|
DataRow[] rows = dataRow.GetChildRows("TreeRelation");
|
|
TreeNode node = new TreeNode();
|
|
node.Text = dataRow["MyText"].ToString();
|
|
|
|
if (rows.Length > 0)
|
|
{
|
|
node.Leaf = false;
|
|
}
|
|
else
|
|
{
|
|
node.Leaf = true;
|
|
}
|
|
nodes.Add(node);
|
|
|
|
foreach (DataRow row in rows)
|
|
{
|
|
ResolveTree(row, node.Nodes);
|
|
}
|
|
}
|
|
|
|
|
|
private void ResolveTreeAutoLeaf(DataRow dataRow, TreeNodeCollection nodes)
|
|
{
|
|
TreeNode node = new TreeNode();
|
|
node.Text = dataRow["MyText"].ToString();
|
|
nodes.Add(node);
|
|
|
|
DataRow[] rows = dataRow.GetChildRows("TreeRelation");
|
|
foreach (DataRow row in rows)
|
|
{
|
|
ResolveTreeAutoLeaf(row, node.Nodes);
|
|
}
|
|
}
|
|
|
|
#region CreateDataTable
|
|
|
|
private DataTable CreateDataTable()
|
|
{
|
|
DataTable table = new DataTable();
|
|
DataColumn column1 = new DataColumn("Id", typeof(string));
|
|
DataColumn column2 = new DataColumn("MyText", typeof(String));
|
|
DataColumn column4 = new DataColumn("ParentId", typeof(string));
|
|
table.Columns.Add(column1);
|
|
table.Columns.Add(column2);
|
|
table.Columns.Add(column4);
|
|
|
|
DataRow row = table.NewRow();
|
|
row["Id"] = "china";
|
|
row["MyText"] = "China";
|
|
row["ParentId"] = DBNull.Value;
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "henan";
|
|
row["MyText"] = "Henan";
|
|
row["ParentId"] = "china";
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "zhumadian";
|
|
row["MyText"] = "Zhumadian";
|
|
row["ParentId"] = "henan";
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "luohe";
|
|
row["MyText"] = "Luohe";
|
|
row["ParentId"] = "henan";
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "anhui";
|
|
row["MyText"] = "Anhui";
|
|
row["ParentId"] = "china";
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "hefei";
|
|
row["MyText"] = "Hefei";
|
|
row["ParentId"] = "anhui";
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "microsoft";
|
|
row["MyText"] = "Golden Pond";
|
|
row["ParentId"] = "hefei";
|
|
table.Rows.Add(row);
|
|
|
|
row = table.NewRow();
|
|
row["Id"] = "ustc";
|
|
row["MyText"] = "USTC";
|
|
row["ParentId"] = "hefei";
|
|
table.Rows.Add(row);
|
|
|
|
return table;
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|