c# TreeView 数据递归绑定的算法

来源:互联网 发布:c语言else if成绩判定 编辑:程序博客网 时间:2024/05/22 12:02

最近做项目遇到一个TreeView数据绑定的问题。

问题大概是这样的:一个部门有好多级数,可能以后部门人员还会变动。用Combobx显示当然不合适,所以想到用TreeView显示,那么用TreeView实现数据,有两种选择,有多少级部门就循环多少次;还是就是用递归绑定。显然在不考虑效率的情况下,递归绑定显然更灵活,更合适。


一、代码如下:

//绑定第一级节点
        private void bingTreeNode() {
            #region
            DataTable dtFatherNode;
            dtFatherNode = mybumenTableAdapter.getBumenByFaId(0);
          
            if (dtFatherNode.Rows.Count > 0)
            {
                for (int ShangPinTypeIndex = 0; ShangPinTypeIndex < dtFatherNode.Rows.Count; ShangPinTypeIndex++)
                {
                    TreeNode father = new TreeNode();


                    string buMenName = dtFatherNode.Rows[ShangPinTypeIndex]["buMenMC"].ToString().Trim();
                    int ShangPinTypeID = Convert.ToInt32(dtFatherNode.Rows[ShangPinTypeIndex]["buMenId"].ToString().Trim());
                    father.Text = buMenName;
                    father.Tag = ShangPinTypeID;


                    tvBuMen.Nodes.Add(father);


                    bingSonNode(father);
                }
            }
            #endregion
        }




        //绑定子节点
        private void bingSonNode(TreeNode father)
        {
            int id = Convert.ToInt32(father.Tag);
            DataTable dtBuMen = mybumenTableAdapter.getBumenByFaId(id);
            if (dtBuMen.Rows.Count>0)
            {
                for (int ShangPinTypeIndex = 0; ShangPinTypeIndex < dtBuMen.Rows.Count; ShangPinTypeIndex++)
                {
                    TreeNode nodeson = new TreeNode();


                    string buMenName = dtBuMen.Rows[ShangPinTypeIndex]["buMenMC"].ToString().Trim();
                    int myfatherId = Convert.ToInt32(dtBuMen.Rows[ShangPinTypeIndex]["buMenId"].ToString().Trim());
                    nodeson.Text = buMenName;
                    nodeson.Tag = myfatherId;


                    father.Nodes.Add(nodeson);


                    bingSonNode(nodeson);
                }
            }
            else {
                return;
            }


        }




二、运行效果图:





0 0