TreeView递归

1、首先数据库: f_id 项目ID号 ,f_front 父ID号 ,f_name名称,f_type类型,f_layer所处层,f_order 同层的顺序号;(f_layer,f_order不要也可,这里我主要是需要同层排序才用到)
2、然后“select f_id,f_front,f_name,f_type from data”取得DataSet数据集dsFrame;treeview 名称设为tvDept
3、写函数 构建treeveiw树形:
(1)From:
        DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
        public void AddTree(int ParentID, TreeNode pNode)
        {
            string Fstr = "[f_front]          =          " + ParentID;
            dvTree.RowFilter = Fstr;
            foreach (DataRowView Row in dvTree)
            {
                TreeNode Node = new TreeNode();
                Node.Name = Row["f_id"].ToString(); //这里+了2个值分别到Name和Text,可随便
                Node.Text = Row["f_name"].ToString();
                if (Row["f_type"].ToString() == "岗位") //这个不要也可以,主要为了不同类型显示不同图标
                {
                    Node.ImageIndex = 1;
                    Node.SelectedImageIndex = 1;
                }
                else
                {
                    Node.ImageIndex = 0;
                    Node.SelectedImageIndex = 0;
                }
                if (pNode == null)                  //处理主节点
                {
                    tvDept.Nodes.Add(Node);    //加入
                }
                else //处理子节点
                {
                    pNode.Nodes.Add(Node);
                }
                AddTree(Int32.Parse(Row["f_id"].ToString()), Node); //递归
            }
        }

(2)Web:


        DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
        public void AddTree(int ParentID, string userId, TreeNode treeNode)
        {
            dvTree.RowFilter = "[f_front]          =          " + ParentID;
            foreach (DataRowView item in dv)
            {
                TreeNode tr1 = new TreeNode();
                tr1.Text = item["DisplayName"].ToString();
                tr1.Value = item["NodeId"].ToString();
                tr1.NavigateUrl = item["NodeURL"].ToString();
                if (treeNode == null)
                {
                    this.TreeView1.Nodes.Add(tr1);
                }
                else
                {
                    tr1.ImageUrl = "~/images/CloseTree.gif";
                    treeNode.ChildNodes.Add(tr1);
                }
                AddTree(Convert.ToInt32(item["NodeId"]), userId, tr1);
            }
        }

4、调用方法
AddTree(0, (TreeNode)null);    //0就是处于最高级其f_front=0,数据库里1为顶层那就是1,这个随便
最好+一句           tvDept.ExpandAll(); 展开所有项。

转载于:https://www.cnblogs.com/freedom831215/archive/2009/10/03/1577610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值