FineUI/FineUI.Examples/tree/tree_auto_leaf_identification.aspx.cs

146 lines
4.1 KiB
C#
Raw Permalink Normal View History

2015-05-19 14:45:47 +08:00
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
}
}