您的位置:首页 > 编程语言 > C#

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

2015-05-05 09:27 357 查看
最近做项目遇到一个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;

            }

        }

二、运行效果图:








内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: