public BudgetTreeNodeHelper(DataTable dt) { if (dt == null || dt.Rows.Count == 0) { return; } budgetTree = new List <BudgetTreeNode>(); foreach (DataRow row in dt.Rows) { BudgetTreeNode node = new BudgetTreeNode(row); if (ContainsNode(budgetTree, node.Id)) { continue; } if (string.IsNullOrEmpty(row["ParentId"].ToString()) || row["ParentId"].ToString() == "-1") { node.state = "open"; budgetTree.Add(node); } else { AddNode(node, dt); } } }
private void AddNode(BudgetTreeNode node, DataTable dt) { BudgetTreeNode parent = searchNode(node.ParentId); if (parent == null) { DataRow row = searchNode(dt, node.ParentId); if (row == null) { budgetTree.Add(node); return; } parent = new BudgetTreeNode(row); parent.children.Add(node); AddNode(parent, dt); } else { if (!ContainsNode(parent.children, node.Id)) { parent.children.Add(node); } } }