LINQ编程实战TreeView动态绑定数据
创始人
2024-04-03 21:42:05
0

首先,先来重新创建一个数据库表,这里的数据库表与之前所创建的表有些不同,大家可以自己对比一下。

  1. CREATE TABLE [dbo].[Me_Menu] (  
  2.     [Menu_Id] [int] IDENTITY (1, 1) NOT NULL ,/**节点ID*/  
  3.     [Menu_ParentName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,/**父节点名*/  
  4.     [Menu_ChildName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,/**子节点名*/  
  5.     [Menu_Order] [int] NULL ,/**//*排序用*/  
  6. ) ON [PRIMARY]  
  7. GO 

创建好数据库表后,就是打开数据库连接了,具体的打开方法在这里就不哆嗦了,可参考一下WPF(Winform)中动态创建TreeView 中第二步。

然后,一起来看看其数据的绑定方法吧:

  1. private void BindMenuData()  
  2.         {  
  3.             string sql = "Select distinct Menu_ParentName,Menu_ChildName From Me_Menu order by Menu_Order desc";  
  4.             DataTable menudt = db.GetDbTable(sql);//从数据库中查询出该数据库表,GetDbTable()方法请参见wpf动态创建TreeView中的DBbuild类  
  5.             //LINQ查询  
  6.             var menuData = from menu in menudt.AsEnumerable()                       
  7.                                group menu by menu.Field("Menu_ParentName"); //按Menu_ParentName来进行分组  
  8.  
  9.             TreeNode node;//父节点  
  10.             TreeNode childnd;//子节点  
  11.             foreach (var m in menuData) //循环查询  
  12.             {  
  13.                 node = new TreeNode();  
  14.                 node.Text = m.Key; //获取父节点名  
  15.                 foreach (var mm in m) //在分组中循环查询  
  16.                 {  
  17.                     childnd = new TreeNode();  
  18.                     childnd.Text = mm.Field("Menu_ChildName");//获取了节点名  
  19.                     if (childnd.Text != "")//如果子节点名不为空,则将其加入到其对应的父节点中去  
  20.                     {  
  21.                         node.Nodes.Add(childnd);  
  22.                     }  
  23.                 }  
  24.                 MenuTView.Nodes.Add(node);//将所有节点添加到TreeView中去,其MenuTView为TreeView控件  
  25.             }  
  26.         } 

最后,在需要的地方直接调用BindMenuData()就可以了。

当然你也可以重写一个带TreeView参数的方法,如:BindMenuData(TreeView MenuTView),来动态创建TreeView。

希望能给大家带来一点帮助……

【编辑推荐】

  1. 使用LINQ查询泛型字典Dictionary
  2. 浅析Linq to SQL更新数据时容易忽略的问题
  3. 浅谈LINQ to SQL集成数据库语言优劣
  4. LINQ横向对比foreach方法
  5. 浅谈LINQ如何插入删除和更新数据库记录备注

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...