TreeView递归法动态添加节点

主要是连接数据库,然后用ViewState纪录dataset 对象,然后就开始调用递归动态从数据库中添加节点

/// <summary>
    /// 绑定TreeView
    /// </summary>
    private void BindTreeView()
    {
        tvDep.Nodes.Clear();
        Database db = DatabaseFactory.CreateDatabase();
        DbCommand cmd = db.GetStoredProcCommand("B_spDepartmentInfo");
        DataSet ds = db.ExecuteDataSet(cmd);
        this.ViewState["DataSet_Tree"]=ds;
        AddTree(0, (TreeNode)null);        //递归调用 

    }
   
    /// <summary>
    /// 递归添加树的节点
    /// </summary>
    /// <param name="ParentID">父节点的ID</param>
    /// <param name="pNode"></param>
    public void AddTree(int ParentID, TreeNode pNode)
    {
        DataSet DataSet_Tree =(DataSet)this.ViewState["DataSet_Tree"];
        DataView DataView_Tree = new DataView(DataSet_Tree.Tables[0]);
        DataView_Tree.RowFilter = "[ParentDepID]=" + ParentID;
        foreach (DataRowView row in DataView_Tree)
        {
            TreeNode Node = new TreeNode();
            if (pNode == null)  //添加根节点
            {
                Node.Text = row["DepName"].ToString()+"  (编码:"+row["DepCode"].ToString().Trim()+")";
                Node.Value = row["DepID"].ToString();
                tvDep.Nodes.Add(Node);
                Node.Expanded = true;
                AddTree(Int32.Parse(row["DepID"].ToString()), Node);    //再次递归
            }
            else
            {
                //添加当前节点的子节点
                Node.Text = row["DepName"].ToString() + "  (编码:" + row["DepCode"].ToString().Trim() + ")";
                Node.Value = row["DepID"].ToString();
                pNode.ChildNodes.Add(Node);
                Node.Expanded = true; //节点状态展开
                AddTree(Int32.Parse(row["DepID"].ToString()), Node);     //再次递归
            }
        }
    } 

转载于:https://www.cnblogs.com/mushroom_lb/archive/2008/08/26/1276449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值