C# - [窗体] TreeView数据库数据预加载

C# 专栏收录该内容
34 篇文章 0 订阅

▶ 窗体界面

▶ 源码

using System;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace login_demo
{
    public partial class Form2 : Form
    {
        String conn_str = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=E:\Desktop\C-Sharp\Month_11\day1115\login_demo\login_demo\Database1.mdf;Integrated Security=True";

        public Form2()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 窗口加载时从数据库读取数据并填充
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form2_Load(object sender, EventArgs e)
        {
            addParent();
        }

        /// <summary>
        /// 迭代填充父节点
        /// </summary>
        void addParent()
        {
            String sql = "SELECT * FROM organization WHERE org_parent_id=-1";
            SqlConnection conn = new SqlConnection(conn_str);
            SqlDataReader sql_reader = null;

            //连接数据库
            try
            {
                conn.Open();
                SqlCommand command = new SqlCommand(sql, conn);
                sql_reader = command.ExecuteReader();
                while (sql_reader.Read())
                {
                    //获取节点的org_id与org_name
                    var name = sql_reader["org_name"].ToString();
                    var id = Convert.ToInt32(sql_reader["org_id"]);
                    var node = new TreeNode(name);

                    //TreeView填充
                    treeView1.Nodes.Add(node);

                    //迭代填充子节点
                    AddChildren(node, id);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Warnning Info!");
            }
            finally
            {
                sql_reader.Close();
                conn.Close();
            }
        }

        /// <summary>
        /// 添加子节点
        /// </summary>
        /// <param name="node"></param>
        /// <param name="pid">pid = parent_id</param>
        void AddChildren(TreeNode pnode,int pid)
        {
            String sql = $"SELECT * FROM organization WHERE org_parent_id={pid}";
            SqlConnection conn = new SqlConnection(conn_str);
            SqlDataReader sql_reader = null;

            //连接数据库
            try
            {
                conn.Open();
                SqlCommand command = new SqlCommand(sql, conn);
                sql_reader = command.ExecuteReader();
                while (sql_reader.Read())
                {
                    //获取节点的org_id与org_name
                    var name = sql_reader["org_name"].ToString();
                    var id = Convert.ToInt32(sql_reader["org_id"]);
                    var node = new TreeNode(name);

                    //TreeView填充
                    pnode.Nodes.Add(node);

                    //迭代填充子节点
                    AddChildren(node, id);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Warnning Info!");
            }
            finally
            {
                sql_reader.Close();
                conn.Close();
            }
        }
    }
}


  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:点我我会动 设计师:我叫白小胖 返回首页

打赏作者

空山新雨⁣

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值