Это, вероятно, будет что-то вроде этого. Предоставьте еще некоторую подробную информацию относительно того, что точно Вы хотите сделать при необходимости в больше.
//In Page load
foreach (DataRow row in topics.Rows)
{
TreeNode node = new TreeNode(dr["name"], dr["topicId"])
node.PopulateOnDemand = true;
TreeView1.Nodes.Add(node);
}
///
protected void PopulateNode(Object sender, TreeNodeEventArgs e)
{
string topicId = e.Node.Value;
//select from topic where parentId = topicId.
foreach (DataRow row in topics.Rows)
{
TreeNode node = new TreeNode(dr["name"], dr["topicId"])
node.PopulateOnDemand = true;
e.Node.ChildNodes.Add(node);
}
}
Не совсем.
Деревья обычно обрабатываются лучше всего, не загружая все, что Вы можете сразу. Таким образом, необходимо получить корневой узел (или тема), который не имеет никакого parentIDs. Затем добавьте их к корневому узлу деревьев, и затем для каждого узла Вы добавляете, что необходимо получить его детей.
foreach (DataRow row in topicsWithOutParents.Rows)
{
TreeNode node = New TreeNode(... whatever);
DataSet childNodes = GetRowsWhereParentIDEquals(row["topicId"]);
foreach (DataRow child in childNodes.Rows)
{
Treenode childNode = new TreeNode(..Whatever);
node.Nodes.add(childNode);
}
Tree.Nodes.Add(node);
}
Когда нет больших объемов данных, не рекомендуется подключать базу данных, извлекать данные и снова и снова добавлять в узел дерева для дочерних / подузлов. Это можно сделать с одной попытки. См. Следующий образец:
http://urenjoy.blogspot.com/2009/08/display-hierarchical-data-with-treeview.html