Quantcast
Channel: 生活志 » c
Viewing all articles
Browse latest Browse all 3

VS2005 C#动态递归绑定TreeView(WinForm)

$
0
0

继续分享我在写程序当中的一些心得体会。其实早在学校的时候写博客,就经常分享一些自己的学习所得,不过那时候写程序都是 WebForm 的,基本上没有写过 WinForm 的程序。现在不同了,工作中用到 web 程序的机会不多,反而桌面端的程序用的多了,只好改行做 WinForm 程序了。

我定义了一个单位数据表,用来存储单位信息,程序运行时要从数据库里取出单位信息动态绑定在 TreeView 树形菜单。这个数据表的结构是这样的:

下面是相关的程序代码:


  1:         OleDbConnection connection = null;
  2:         OleDbCommand command = null;
  3:         OleDbDataAdapter dataAdapter = null;
  4:         string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " +
  5:                     Application.StartupPath + @"\Database\TEST.mdb" + "; Jet OleDb:Database Password = 12345";
  6:         
  7:         private void FormMain_Load(object sender, EventArgs e)
  8:         {
  9:                 //初始化TreeView信息
 10:                 TreeViewUnit_DataBind();
 11:         }
 12:         protected void TreeViewUnit_DataBind()
 13:         {
 14: 
 15:             //初始化连接
 16:             connection = new OleDbConnection(connectionString);
 17:             //打开连接
 18:             connection.Open();
 19: 
 20:             //初始化TreeView信息
 21:             this.treeViewUnit.Nodes.Clear();
 22:             TreeNode root = new TreeNode("单位列表");     //添加根节点
 23:             root.Expand();
 24:             this.treeViewUnit.Nodes.Add(root);
 25: 
 26:             string sqlStr = "SELECT * FROM UNIT WHERE SuperiorID = 0";  //选择大单位节点
 27: 
 28:             dataAdapter = new OleDbDataAdapter(sqlStr, connection);
 29:             DataSet ds = new DataSet();
 30:             dataAdapter.Fill(ds);
 31:             DataView dv = ds.Tables[0].DefaultView;
 32: 
 33:             foreach (DataRowView row in dv)
 34:             {
 35:                 string unitName = row["Unit_Name"].ToString().Trim();
 36:                 int unitID = Convert.ToInt32(row["ID"].ToString().Trim());
 37:                 TreeNode unit=new TreeNode(unitName);
 38:                 unit.Expand();
 39: 
 40:                 TreeView_AddChildNodes(unit, unitID);
 41:                 this.treeViewUnit.Nodes.Add(unit);
 42:             }
 43: 
 44:             //关闭连接
 45:             connection.Close();
 46:         }
 47: 
 48:         //TreeView递归添加子节点
 49:         protected void TreeView_AddChildNodes(TreeNode node, int nodeID)
 50:         {
 51:             string sqlStr="SELECT * FROM UNIT WHERE SuperiorID = " + nodeID;
 52:             dataAdapter = new OleDbDataAdapter(sqlStr, connection);
 53:             DataSet ds = new DataSet();
 54:             dataAdapter.Fill(ds);
 55:             DataView dv = ds.Tables[0].DefaultView;
 56: 
 57:             foreach (DataRowView row in dv)
 58:             {
 59:                 string unitName = row["Unit_Name"].ToString().Trim();
 60:                 int unitID = Convert.ToInt32(row["ID"].ToString().Trim());
 61:                 TreeNode unit = new TreeNode(unitName);
 62:                 unit.Expand();
 63: 
 64:                 TreeView_AddChildNodes(unit, unitID);
 65:                 node.Nodes.Add(unit);
 66:             }
 67:         }

程序的运行结果是这样的,满足了我的需求。因为是小程序,数据也比较少,所以没有考虑数据库存储优化等等。

相关日志

最近评论


© 路易大叔 Louis 倾情奉献 生活志, 2006-2011.
原始链接(Permalink): VS2005 C#动态递归绑定TreeView(WinForm) | 34 条评论
标签(Post tags): , , , , ,
订阅(Subscribe): 直接订阅 | FeedBurner
站点(More Blogs): 生活在济南 | 落入凡间的天使 | 小小的梦想
服务(My Services): 世嘉服务网 | 济南生活|读书-音乐-电影 | 迷失济南


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles





Latest Images