数据库的数据结构是这样的:
sCompany_no varchar(10) Unchecked
sCompany_name varchar(50) Unchecked
sShortname varchar(30) Checked
sParent_no varchar(10) Checked
sTree varchar(30) Checked
iTreeLevel int Checked
具体数据如下:

000001 总公司 简称 NULL 001 1
000002 公司2 简称 000001 001001 2
000003 公司3 简称 000001 001002 2
000004 公司4 简称 000001 001003 2
000005 公司4 简称 000001 001004 2
000006 公司4下属 简称 000005 001004001 3
000007 公司4下属2 简称 000005 001004002 3

构造treeview的c#代码如下:(用递归方法实现)

    初始化部门树#region 初始化部门树
    //--------------------------------------------------------------------------------------------------------
    /**//// <summary>
    /// ORM实现对部门树的初始化
    /// </summary>
    /// <param name="toTreeview">指定一个目标treeview</param>
    public static void CompanyTree_Init(TreeView toTreeView)
    {
        toTreeView.Nodes.Clear();
        int iLevel = 1;// tmpCorp.iTreeLevel;
        ORtCompany corp = new ORtCompany();
        ORDataReader<ORtCompany> reader = corp.DataAccessor.ExecuteReader(CommandType.Text, "select * from tCompany where sStatus = '1'", corp, null);
       
        TreeNode tmpNode = new TreeNode();
        foreach (ORtCompany u in reader)//循环每行数据
        {
            if ((int)u.iTreeLevel == iLevel)
            {
                TreeNode rootNode = new TreeNode();
                rootNode.Text = u.sCompany_no.ToString().Trim() + u.sShortname.ToString().Trim();
                rootNode.Value = u.sCompany_no.ToString().Trim();
                rootNode.ToolTip = u.sCompany_name;
                toTreeView.Nodes.Add(rootNode);
                rootNode.Expanded = true;
            }
            else
            {
                tmpNode = null;
                for (int i = 0; i < toTreeView.Nodes.Count; i++)
                {
                    TreeNode ttNode = new TreeNode();
                    ttNode = FindNode(toTreeView.Nodes[i], u.sParent_no.ToString().Trim());
                    if (ttNode != null) tmpNode = ttNode;
                }
                if (tmpNode != null)
                {
                    TreeNode subNode = new TreeNode();
                    subNode.Text = u.sCompany_no.ToString().Trim() + u.sShortname.ToString().Trim();
                    subNode.Value = u.sCompany_no.ToString().Trim();
                    subNode.ToolTip = u.sCompany_name;
                    tmpNode.ChildNodes.Add(subNode);
                    subNode.Expanded = true;
                }
            }
        }
        reader.Close();
    }
    /**//// <summary>
    /// 递归查找父节点
    /// </summary>
    /// <param name="tnParent">指定一个根节点,然后遍历它</param>
    /// <param name="strValue">所要查找的节点的value</param>
    public static TreeNode FindNode(TreeNode tnParent, string strValue)
    {
        if (tnParent == null) return null;
        if (tnParent.Value == strValue) return tnParent;
        TreeNode tnRet = null;
        foreach (TreeNode tn in tnParent.ChildNodes)
        {
            tnRet = FindNode(tn, strValue);
            if (tnRet != null) break;
        }
        return tnRet;
    }
    #endregion

其中用到了ORM获取数据,不用它当然也可以。

根据数据库中的数据构造treeview相关推荐

  1. 我刚做的一个TreeView的CheckBox进行选中插入数据库,从数据库中读取数据后让CheckBox勾选的代码!...

    #region 绑定角色     /// <summary>     /// 绑定权限信息     /// </summary>     protected void Bind ...

  2. php怎么插入数据,利用PHP怎么向MySQL数据库中插入数据

    利用PHP怎么向MySQL数据库中插入数据 发布时间:2020-12-11 16:41:47 来源:亿速云 阅读:89 作者:Leah 这篇文章给大家介绍利用PHP怎么向MySQL数据库中插入数据,内 ...

  3. mysql数据库中插入数据并进行自动迭代更新

    问题 我们知道在数据库中保证数据的唯一性是十分必要的,这也就是有主键的一个原因,但是数据肯定是需要更新的,当然我们可以按照日期或者其他维度进行数据的永不冲突的更新.但是还有一种情况下需要我们迭代的去更 ...

  4. 用java向mysql数据库中插入数据为空

    利用java面向对像编程,向数据库中插入数据时.遇到插入的数据为空的情况.在此做一小结: 1.数据库连接正正常 2.sql语句没有问题 3.程序没有报异常 4.代码: import java.util ...

  5. android studio数据库存储数据,如何使用API​​ 23在android studio中的数据库中存储数据?...

    大多数时候我不会发布任何内容,因为我可以在其他帖子中找到我需要的所有内容,但是现在我已经有几天了,您如何在数据库中存储任何内容?这是我的Java代码如何使用API​​ 23在android studi ...

  6. 从oracle9i/92数据库中导出数据至 oracle 8.1.7 数据库中

    根据ORACLE官方文档的说明,一旦数据库创建后,数据库的字符集是不能改变的.因此,提前考虑自己的数据库将选用哪一种字符集 是十分重要的.数据库字符集选择的一般规则是将数据库字符集设定为操作系统本地字 ...

  7. 以使用QSqlQuery向数据库中插入数据为例,做一个小结

    背景: 最近在使用Qt+SQLite写一个本地数据库管理程序(使用者不懂SQL),在写向数据库中插入数据的 相关的函数时,我遇到了几个问题(暂时就这些): 1.向指定字段插入指定数据时,读取到的数据都 ...

  8. c从sqlite3数据库中获取数据,并对数据进行拼接

    c从sqlite3数据库中获取数据,并对数据进行拼接 函数功能 对数据库的操作 创建数据库: 创建USER表: 创建表内数据: 查看表内数据: 查看表结构: 函数实现 函数编译: 函数结果: 函数功能 ...

  9. asp.net学习笔记·将数据库中的数据保存在EXCEL文件中

    提取数据库中的数据,将其保存在EXCEL文件中,并提供下载. 在一般处理程序中将数据库数据保存在EXCEL文件中的代码 using System; using System.Collections.G ...

  10. python3.5链接SQL2017,读取数据库中的数据

    之前写了一个小程序,使用的数据是从数据库中下载出来的,但是现在想要让它直接链接上数据库中,可以直接从数据库中读取数据,所以研究了一下python和sql之间的链接.具体如下: 使用的库为pyodbc ...

最新文章

  1. ThreadLocal原理分析与使用场景
  2. Netty入门(七)使用SSL/TLS加密Netty程序
  3. Installation error: INSTALL_FAILED_CONTAINER_ERROR
  4. 使用charles对vue项目进行map Local功能mock数据页面不正常显示
  5. protobuf在go中的应用
  6. mysql 文件放网络盘_MySQL InnoDB的磁盘文件及落盘机制
  7. nginx 响应服务器静态,405 Not Allowed,nginx静态文件响应post请求
  8. Ajax-jsonp
  9. findbugs-dea_FindBugs和JSR-305
  10. 看程序员如何给女朋友解释什么是锟斤拷?
  11. Spring:@Transactional 注解使用讲解
  12. 什么是Apache Flink
  13. java php rsa加密解密算法_PHP rsa加密解密算法原理解析
  14. Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager 转发非原创...
  15. 从项目中学习Django 天天生鲜---------前台首页分析
  16. 百度必应谷歌图片自动爬取库icrawler使用体会
  17. 网络爬虫:Beautiful Soup库信息组织与提取
  18. GLCC编程夏令营——LMP课题 周会分享
  19. 波浪下划线怎么设置_如何在word中的文字下面加波浪线
  20. Spring Security详细讲解(JWT+SpringSecurity登入案例)

热门文章

  1. 关于M1芯片版Mac安装Photoshop后储存psd时出现程序错误提示的解决方法
  2. 【Mac技巧】怎样隐藏电脑Dock栏
  3. cwRsyncServer 从 windows server 2008 同步到 CentOS
  4. 【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘
  5. 谈谈你对TCP三次握手和四次挥手的理解
  6. Python- 索引 B+数 比如书的目录
  7. 电商项目面试题 及mysql面试题 太难没啥用
  8. 自定义控件被忽略的渲染性能
  9. 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt)
  10. 如何将 Mac 置入睡眠状态或唤醒 Mac?