WinForm中动态绑定TreeView数据

本文介绍如何在WinForm应用中通过数据库类`Dbbuild`动态绑定`TreeView`控件的数据。首先,文章展示了如何打开、检查和关闭数据库连接。接着,详细说明了如何使用`OleDbDataAdapter`获取数据表,并填充到`DataSet`中,以供`TreeView`显示。整个过程通过执行SQL语句实现数据过滤和选择。

 一、建立数据库类

  1. class Dbbuild
  2.     {
  3.         private OleDbConnection db_conn;//  = new OleDbConnection();
  4.         private OleDbCommand db_cmd = new OleDbCommand();
  5.         private OleDbDataAdapter db_adp;
  6.         private DataSet db_ds;
  7.         /// <summary>
  8.         /// 打开数据库连接
  9.         /// </summary>
  10.         public void OpenDbConn()
  11.         {
  12.             CheckDbConn();
  13.         }
  14.         /// <summary>
  15.         /// 检查连接
  16.         /// </summary>
  17.         /// <returns></returns>
  18.         public bool CheckDbConn()
  19.         {
  20.             try
  21.             {   //连接到数据库
  22.                 db_conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..//..//DataBase//mezhx_db.mdb");
  23.                 db_cmd.Connection = db_conn;//建立连接
  24.                 db_conn.Open();//打开连接
  25.             }
  26.             catch (Exception ex)
  27.             {
  28.                 System.Console.WriteLine(ex);
  29.                 return false;
  30.             }
  31.             return true;
  32.         }
  33.         /// <summary>
  34.         /// 关闭数据库
  35.         /// </summary>
  36.         public void CloseDbConn()
  37.         {
  38.             if (db_conn.State == ConnectionState.Open)
  39.             {
  40.                 db_conn.Close();
  41.             }
  42.             db_conn.Dispose();
  43.             db_cmd.Dispose();
  44.         }
  45.         /// <summary>
  46.         /// 返回Table数据表
  47.         /// </summary>
  48.         /// <param name="sqlText">传入的SQL语句</param>
  49.         /// <returns></returns>
  50.         public DataTable GetDaTable(string sqlText)
  51.         {
  52.             db_adp = new OleDbDataAdapter();
  53.             db_ds = new DataSet();
  54.             db_ds.Clear();
  55.             try
  56.             {
  57.                 OpenDbConn();//打开数据库连接
  58.                 db_cmd.CommandType = CommandType.Text;
  59.                 db_cmd.CommandText = sqlText;
  60.                 db_adp.SelectCommand = db_cmd;
  61.                 db_adp.Fill(db_ds, "db_Table");
  62.             }
  63.             catch (Exception ex1)
  64.             {
  65.                 System.Console.WriteLine(ex1);
  66.             }
  67.             finally
  68.             {
  69.                 db_adp.Dispose();
  70.                 CloseDbConn();
  71.             }
  72.             return db_ds.Tables["db_Table"];
  73.         }
  74.     }

二、操作方法

  1.          /// <summary>
  2.         /// 创建方法
  3.         /// </summary>
  4. private void CreateTreeView()
  5.         {
  6.             try
  7.             {
  8.                 DataTable dbTable = new DataTable();论
  9.                 string dbsql = "Select * From Me_Menu";
  10.                 dbTable = dbbuild.GetDaTable(dbsql);
  11.                 
  12.                 //将第一级菜单取出生成TreeView的节点,作为递归运算的入口
  13.                 CreateTreeViewRecursive(treeView1.Nodes, dbTable, 0);
  14.             }
  15.             catch (Exception dbex)
  16.             {
  17.                 System.Console.WriteLine(dbex);
  18.             }
  19.         }
  20.         /// <summary>
  21.         /// 递归查询
  22.         /// </summary>
  23.         /// <param name="nodes">TreeView节点集合</param>
  24.         /// <param name="dataSource">数据源</param>
  25.         /// <param name="parentid">上一级菜单节点标识码</param>
  26.         private void CreateTreeViewRecursive(TreeNodeCollection nodes, DataTable dataSource, int parentid)
  27.         {
  28.             string filter;
  29.             filter = string.Format("Menu_ParentId={0}", parentid);
  30.             DataRow[] drarr = dataSource.Select(filter);
  31.             TreeNode node;
  32.             foreach (DataRow dr in drarr)
  33.             {
  34.                 node = new TreeNode();
  35.                 node.Text = (string)dr["Menu_Name"];
  36.                 node.Tag = (int)dr["Menu_Id"];
  37.                 nodes.Add(node);
  38.                 CreateTreeViewRecursive(node.Nodes, dataSource, (int)node.Tag);
  39.             }
  40.         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值