根据IList递归生成TreeView

在一个项目中采用了NHibernate做为持久层,在开发的过程中遇到了根据数据库动态生成TreeView的问题。在网络检索相关资料时发现,大部分都存在问题,而有一部分又是采用DataSet作为数据载体的。而NHibernate返回的结果我是以Ilist的方式体现的,没办法,只能根据网上的资料自己改写了。下面是递归生成TreeView的具体代码:

    /// <summary>
    /// 加载前台栏目配置表
    /// </summary>
    private void LoadBldColumnConfig()
    {
        BldColumnConfigBLL BldColumnConfigBLL = new BldColumnConfigBLL();
        IList list = BldColumnConfigBLL.GetAllBldColumnConfigs();
        tvColumns.Nodes.Clear();
        CreateTree((TreeNode)null, 0, list);       
    }

    /// <summary>
    /// 根据前台栏目配置表创建树
    /// </summary>
    /// <param name="pNode">TreeNode</param>
    /// <param name="parentID">根结点的FParentColumn</param>
    /// <param name="list">IList</param>
    private void CreateTree(TreeNode pNode, int parentID, IList list)
    {
        IList newList = FilterBldColumnConfig(list, parentID);       

        foreach (BldColumnConfig bldColumnConfig in newList)
        {
            TreeNode Node = new TreeNode();
            if (pNode == null)
            {   
                //添加根节点
                Node.Text = bldColumnConfig.FColumnName;
                Node.Value = bldColumnConfig.Id.ToString();
                tvColumns.Nodes.Add(Node);
                CreateTree(Node, bldColumnConfig.Id, list);
            }
            else
            {
                //添加当前节点的子节点
                Node.Text = bldColumnConfig.FColumnName;
                Node.Value = bldColumnConfig.Id.ToString();
                pNode.ChildNodes.Add(Node);
                CreateTree(Node, bldColumnConfig.Id, list);
            }
        }
    }

    /// <summary>
    /// 根据参数筛选前台栏目配置表
    /// </summary>
    /// <param name="list"></param>
    /// <param name="parm"></param>
    /// <returns></returns>
    private IList FilterBldColumnConfig(IList list, int parm)
    {
        ArrayList newList = new ArrayList();

        foreach (BldColumnConfig bldColumnConfig in list)
        {
            if (bldColumnConfig.FParentColumn == parm)
            {
                newList.Add(bldColumnConfig);
            }
        }
        return newList;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值