一、WinForm中TreeView数据绑定

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

 

1、部门表
bumenId              部门
1                     产品研发部
2                    工程项目部
3                       行政部
4                       市场部


2、用户表
userId           用户            bumenId
1                    张三                1
2                    李四                1
3                    王五                2
4                    余六                2 
5                    田七                3
6                   朱八                 3
7                   叶九                 4
8                   姚个                 4

需求为:根据部门和人员表,构造出一棵树,并在TreeView控件中显示,代码如下:

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;
        }
    }
}

 

输出结果如下:

一、WinForm中TreeView数据绑定_第1张图片

 

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

一、WinForm中TreeView数据绑定_第2张图片

 

    //实现多级目录 
    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();
    }

 

 

 

 

 

 

你可能感兴趣的:(CSDN问题动手解决方案汇总)