C#資料庫遞迴構造treeview樹形結構

來源:互聯網
上載者:User

1、首先資料庫: f_id 項目ID號 ,f_front 父ID號 ,f_name名稱,f_type類型,f_layer所處層,f_order 同層的順序號;(f_layer,f_order不要也可,這裡我主要是需要同層排序才用到)

2、然後“select f_id,f_front,f_name,f_type from data”取得DataSet資料集dsFrame;treeview 名稱設為tvDept

3、寫函數 構建treeveiw樹形:

public void AddTree(int ParentID, TreeNode pNode)
               {
                   DataView dvTree = new DataView(dtTree); //就是dtTree = dsFrame.Tables[0];
                   string Fstr = "[f_front]          =          " + ParentID;      
                   dvTree.RowFilter = Fstr;
                   foreach (DataRowView Row in dvTree)
                   {
                       TreeNode Node = new TreeNode();
                       if (pNode == null)                  //處理主節點
                       {    
                           Node.Name = Row["f_id"].ToString(); //這裡+了2個值分別到Name和Text,可隨便
                           Node.Text = Row["f_name"].ToString();
                           if (Row["f_type"].ToString() == "崗位") //這個不要也可以,主要為了不同類型顯示不同表徵圖
                           {
                               Node.ImageIndex = 1;
                               Node.SelectedImageIndex=1;
                           }
                           else
                           {
                               Node.ImageIndex = 0;
                               Node.SelectedImageIndex=0;
                           }
                           tvDept.Nodes.Add(Node);    //加入
                           AddTree(Int32.Parse(Row["f_id"].ToString()), Node); //遞迴
                       }
                       else //處理子節點

                       {      
                           Node.Name = Row["f_id"].ToString();
                           Node.Text = Row["f_name"].ToString();
                           if (Row["f_type"].ToString() == "崗位")
                           {
                               Node.ImageIndex = 1;
                               Node.SelectedImageIndex = 1;
                           }
                           else
                           {
                               Node.ImageIndex = 0;
                               Node.SelectedImageIndex=0;
                           }
                           pNode.Nodes.Add(Node);                    
                           AddTree(Int32.Parse(Row["f_id"].ToString()), Node);
                       }
                   }
               }

4、調用方法

AddTree(0, (TreeNode)null);    //0就是處於最進階其f_front=0,資料庫裡1為頂層那就是1,這個隨便

最好+一句           tvDept.ExpandAll(); 展開所有項。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.