继续分享我在写程序当中的一些心得体会。其实早在学校的时候写博客,就经常分享一些自己的学习所得,不过那时候写程序都是 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: }
程序的运行结果是这样的,满足了我的需求。因为是小程序,数据也比较少,所以没有考虑数据库存储优化等等。
相关日志
- VS2005 C#连接带密码的Access数据库(72)
- SQL Server 2005:error 0 - 管道的另一端上无任何进程error 40 - 无法打开到 SQL Server 的连接(22)
- VS2005 C#程序部署到没有安装.net的机器(40)
- VS2005实时调试的禁用和恢复(0)
- 关于JVM 和C 的科普小说! [转载](0)
- VS2005未能加载文件或程序集Microsoft.Build.Engine(0)
- 又解决了几个问题:DropdownList和UpdatePanel(0)
- 天气转暖,欣喜(0)
- 解析SQLServer事务日志压缩与删除的方法(0)
- IIS + ASP.NET 2.0调试过程(0)
最近评论
- Louis Han : @网名繁体字, 数据很少
- 网名繁体字 : 在递归里面读取数据库,会影响一点效率
- Louis Han : @Afio, CSDN上面太杂乱了
- Louis Han : @莫也, 我也订阅你了,给你加链接!
- Louis Han : @电商圈, 谢谢
© 路易大叔 Louis 倾情奉献 生活志, 2006-2011.
原始链接(Permalink): VS2005 C#动态递归绑定TreeView(WinForm) |
34 条评论
标签(Post tags): c, TreeView, vs2005, WinForm, 数据库, 递归绑定
订阅(Subscribe): 直接订阅 | FeedBurner
站点(More Blogs): 生活在济南 | 落入凡间的天使 | 小小的梦想
服务(My Services): 世嘉服务网 | 济南生活|读书-音乐-电影 | 迷失济南