예제 #1
0
    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);
            }
        }
    }
예제 #2
0
    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);
            }
        }
    }