zoukankan      html  css  js  c++  java
  • C#数据库递归构造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树形:

    public void AddTree(int ParentID, TreeNode pNode)
                   {
                       DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
                       string Fstr = "[f_front]          =          " + ParentID;      
                       dvTree.RowFilter = Fstr;
                       foreach (DataRowView Row in dvTree)
                       {
                           TreeNode Node = new TreeNode();
                           if (pNode == null)                  //处理主节点
                           {    
                               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;
                               }
                               tvDept.Nodes.Add(Node);    //加入
                               AddTree(Int32.Parse(Row["f_id"].ToString()), Node); //递归
                           }
                           else //处理子节点

                           {      
                               Node.Name = Row["f_id"].ToString();
                               Node.Text = Row["f_name"].ToString();
                               if (Row["f_type"].ToString() == "岗位")
                               {
                                   Node.ImageIndex = 1;
                                   Node.SelectedImageIndex = 1;
                               }
                               else
                               {
                                   Node.ImageIndex = 0;
                                   Node.SelectedImageIndex=0;
                               }
                               pNode.Nodes.Add(Node);                    
                               AddTree(Int32.Parse(Row["f_id"].ToString()), Node);
                           }
                       }
                   }

    4、调用方法

    AddTree(0, (TreeNode)null);    //0就是处于最高级其f_front=0,数据库里1为顶层那就是1,这个随便

    最好+一句           tvDept.ExpandAll(); 展开所有项。

  • 相关阅读:
    SharePoint 2013 中的SQL Server 安全
    SharePoint 2013 的HTML5特性之响应式布局
    SharePoint 2013 一些小技巧
    SharePoint 2013 排错之"Code blocks are not allowed in this file"
    SharePoint 2013 创建搜索中心及搜索设置
    SharePoint 2013 使用PowerShell创建State Service
    SharePoint 2013 内容部署功能简介
    SharePoint 使用PowerShell恢复误删的网站集
    SharePoint 自定义WebPart之间的连接
    linux之misc及使用misc创建字符设备
  • 原文地址:https://www.cnblogs.com/craig/p/1238322.html
Copyright © 2011-2022 走看看