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