protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GenerateTreeView();
}
}
下面的方法将从您的表中进行选择 - 在 ID(我假设是树视图“MAIN PARENT”节点)和“Parent_ID”(我假设是子节点)之间创建关系。然后它将创建父节点,随后为每个子节点使用该方法填充父节点RecursivelyPopulate
private void GenerateTreeView()
{
SqlConnection con = new SqlConnection("CONN STR");
con.Open();
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM MY TABLE", con);
DataSet ds = new DataSet();
adapter.Fill(ds);
ds.Relations.Add("NodeRelation",
ds.Tables[0].Columns["ID"],
ds.Tables[0].Columns["ParentID"]);
foreach (DataRow dbRow in ds.Tables[0].Rows)
{
if (dbRow.IsNull("PARENTID"))
{
RadTreeNode node = CreateNode(dbRow["Description"].ToString(), true);
RadTreeView1.Nodes.Add(node);
RecursivelyPopulate(dbRow, node);
}
}
}
下面的方法 ( RecursivelyPopulate
) 将为关系中的每个子节点创建一个子节点,为在上面的方法中创建的父节点 ( GenerateTreeView
)
private void RecursivelyPopulate(DataRow dbRow, RadTreeNode node)
{
foreach (DataRow childRow in dbRow.GetChildRows("NodeRelation"))
{
RadTreeNode childNode = CreateNode(childRow["Description"].ToString();
node.Nodes.Add(childNode);
RecursivelyPopulate(childRow, childNode);
}
}
** 根据您的表结构,您可以使用上面的代码片段拥有无限数量的父子关系