一、WinForm中TreeView数据绑定

简介: 原问题贴地址:http://topic.csdn.net/u/20110621/17/7bad3c94-2761-4d39-84fa-db95b8e66977.

原问题贴地址:http://topic.csdn.net/u/20110621/17/7bad3c94-2761-4d39-84fa-db95b8e66977.html

 

部门表
bumenId 部门
1 产品研发部
2 工程项目部
3 行政部
4 市场部
用户表
userId 用户 bumenId
1 张三 1
2 李四 1
3 王五 2
4 余六 2
5 田七 3
6 朱八 3
7 叶九 4
8 姚个 4

 

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using System.Data; namespace CSDNDemoTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { DataSet ds_Department = getDataSet("部门表"); DataSet ds_Employees = getDataSet("用户表"); foreach (DataRow dr in ds_Department.Tables[0].Rows) { //部门表绑定,作为一级层次 TreeNode tn_origine = new TreeNode(); tn_origine.Text = dr["部门"].ToString(); this.treeView1.Nodes.Add(tn_origine); //用户表绑定 DataRow[] dr_arr = ds_Employees.Tables[0].Select("bumenId="+int.Parse(dr["bumenId"].ToString())); if (dr_arr.Length > 0) { foreach (DataRow dr_sub in dr_arr) { TreeNode tn_sub = new TreeNode(); tn_sub.Text = dr_sub["用户"].ToString(); tn_origine.Nodes.Add(tn_sub); } } } } //获取数据集 public DataSet getDataSet(string tableName) { DataSet ds = new DataSet(); using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=saiyang;Database=CSDN")) { con.Open(); string strSQL = "select * from "+tableName; using (SqlDataAdapter sda = new SqlDataAdapter(strSQL, con)) { sda.Fill(ds); } } return ds; } } }

 

输出结果如下:


二、另一种方式,数据表结果如下图:


    //实现多级目录 
    public string rootFT_Id = "00";//根节点Tag 
    // 添加根节点 
    private void AddRootCompany()
    {
        DataSet ds = new DataSet();
        using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=;Database=TW_KJ"))
        {
            con.Open();
            string strSQL = "select * from TB_Personnel_Type where FT_ID =" + rootFT_Id;
            using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con))
            {
                adapter.Fill(ds);
            }
            TreeNode NewNode = new TreeNode();
            NewNode.Text = ds.Tables[0].Rows[0]["FT_NAME"].ToString().Trim();
            this.treeView1.Nodes.Add(NewNode);
            InitTreeCompanyChildNode(NewNode, rootFT_Id);
        }
    }

    public DataSet getMenuByLevel(string strFT_ID)
    {
        DataSet ds = new DataSet();
        using (SqlConnection con = new SqlConnection("Data Source=localhost;uid=sa;pwd=;Database=TW_KJ"))
        {
            con.Open();
            string strSQL;
            if (strFT_ID == "00")
            {
                strSQL = "select * from TB_Personnel_Type where FT_ID like'" + "0_' and FT_UP_NO = 1";
            }
            else
            {
                strSQL = "select * from TB_Personnel_Type where FT_ID like'" + strFT_ID.Trim() + "__'";
            }
            using (SqlDataAdapter adapter = new SqlDataAdapter(strSQL, con))
            {
                adapter.Fill(ds);
            }
        }
        return ds;
    }
    //递归获取子节点 
    private void InitTreeCompanyChildNode(TreeNode pNode, string fatherFT_ID)
    {
        DataSet ds = getMenuByLevel(fatherFT_ID);
        DataView dataView = new DataView();
        dataView = ds.Tables[0].DefaultView;
        foreach (DataRowView drv in dataView)
        {
            string newFT_ID = drv["FT_ID"].ToString();
            string name = drv["FT_NAME"].ToString();
            TreeNode NewNode = new TreeNode();
            //将子节点添加到父节点下面 
            NewNode.Text = name;
            pNode.Nodes.Add(NewNode);
            InitTreeCompanyChildNode(NewNode, newFT_ID);
        }
    }
    private void Property_Load(object sender, EventArgs e)
    {
        AddRootCompany();
    }


 

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
阿里云实时数仓实战 - 项目介绍及架构设计
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
9月前
|
数据挖掘 数据处理 C#
WPF技术之DataGrid控件
WPF DataGrid是一种可以显示和编辑数据的界面控件。它可以作为表格形式展示数据,支持添加、删除、修改、排序和分组操作。
187 0
|
9月前
|
数据可视化 C#
WPF技术之TreeView控件
WPF TreeView控件是一个用于显示分层数据的控件,类似于文件浏览器中的目录结构。
129 0
WinForm——TreeView总结
WinForm——TreeView总结
384 0
|
C#
Seaching TreeVIew WPF
原文:Seaching TreeVIew WPF 项目中有一个树形结构的资源,需要支持搜索功能,搜索出来的结果还是需要按照树形结构展示,下面是简单实现的demo。 1.首先创建TreeViewItem的ViewModel,一般情况下,树形结构都包含DisplayName,Deepth,Parent...
811 0
|
C#
WPF 实现 DataGrid/ListView 分页控件
原文:WPF 实现 DataGrid/ListView 分页控件 在WPF中,通常会选用DataGrid/ListView进行数据展示,如果数据量不多,可以直接一个页面显示出来。如果数据量很大,2000条数据,一次性显示在一个页面中,不仅消耗资源,而且用户体验也很糟糕。
1876 0
|
前端开发
MVVM里绑定TreeView控件的SelectedItem
原文:MVVM里绑定TreeView控件的SelectedItem 来源:http://stackoverflow.com/questions/9143107/get-selected-treeviewitem-using-mv...
1008 0
|
C#
WPF 4 DataGrid 控件(基本功能篇)
原文:WPF 4 DataGrid 控件(基本功能篇)      提到DataGrid 不管是网页还是应用程序开发都会频繁使用。通过它我们可以灵活的在行与列间显示各种数据。本篇将详细介绍WPF 4 中DataGrid 的相关功能。
1459 0
|
C#
WPF TreeView HierarchicalDataTemplate
原文 WPF TreeView HierarchicalDataTemplate   ...
1632 0