LINQ編程實戰(zhàn)TreeView動態(tài)綁定數(shù)據(jù)
首先,先來重新創(chuàng)建一個數(shù)據(jù)庫表,這里的數(shù)據(jù)庫表與之前所創(chuàng)建的表有些不同,大家可以自己對比一下。
- CREATE TABLE [dbo].[Me_Menu] (
- [Menu_Id] [int] IDENTITY (1, 1) NOT NULL ,/**節(jié)點ID*/
- [Menu_ParentName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,/**父節(jié)點名*/
- [Menu_ChildName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,/**子節(jié)點名*/
- [Menu_Order] [int] NULL ,/**//*排序用*/
- ) ON [PRIMARY]
- GO
創(chuàng)建好數(shù)據(jù)庫表后,就是打開數(shù)據(jù)庫連接了,具體的打開方法在這里就不哆嗦了,可參考一下WPF(Winform)中動態(tài)創(chuàng)建TreeView 中第二步。
然后,一起來看看其數(shù)據(jù)的綁定方法吧:
- private void BindMenuData()
- {
- string sql = "Select distinct Menu_ParentName,Menu_ChildName From Me_Menu order by Menu_Order desc";
- DataTable menudt = db.GetDbTable(sql);//從數(shù)據(jù)庫中查詢出該數(shù)據(jù)庫表,GetDbTable()方法請參見wpf動態(tài)創(chuàng)建TreeView中的DBbuild類
- //LINQ查詢
- var menuData = from menu in menudt.AsEnumerable()
- group menu by menu.Field("Menu_ParentName"); //按Menu_ParentName來進行分組
- TreeNode node;//父節(jié)點
- TreeNode childnd;//子節(jié)點
- foreach (var m in menuData) //循環(huán)查詢
- {
- node = new TreeNode();
- node.Text = m.Key; //獲取父節(jié)點名
- foreach (var mm in m) //在分組中循環(huán)查詢
- {
- childnd = new TreeNode();
- childnd.Text = mm.Field("Menu_ChildName");//獲取了節(jié)點名
- if (childnd.Text != "")//如果子節(jié)點名不為空,則將其加入到其對應(yīng)的父節(jié)點中去
- {
- node.Nodes.Add(childnd);
- }
- }
- MenuTView.Nodes.Add(node);//將所有節(jié)點添加到TreeView中去,其MenuTView為TreeView控件
- }
- }
最后,在需要的地方直接調(diào)用BindMenuData()就可以了。
當然你也可以重寫一個帶TreeView參數(shù)的方法,如:BindMenuData(TreeView MenuTView),來動態(tài)創(chuàng)建TreeView。
希望能給大家?guī)硪稽c幫助……
【編輯推薦】


















