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