2015-12-10 43 views
0

我有一個很大的問題。我想通過我得到的一些數據填充樹視圖。我如何使用OLEDB填充ID和parentID樹形視圖

有一個根節點。到這個根節點我想添加一些其他節點,由我的數據定義。數據包括名稱,ID和ParentID

數據存儲在OLEDB中,但我已經存儲在我的程序中。

讓我給你舉個例子,因爲我的英語不是最好的:

數據:

TESTDATA 1 0

Testdata1 2 0

Testdata3 3 1

Testdata4 4 2

Testdata5 5 3

Testdata6 6 4

Testdata7 7 4

所以我的樹看起來應該類似於:

+根

++ Testdata1

++++ Testdata3

++++++ Testdata5

++ Testdata2

++++ Testdata4

++++++ Testdata6

++++++ Testdata7

你有任何想法,我怎麼能做到這一點?

問候

Schlinger

回答

0

您需要遍歷樹遞歸方法。

private void AddNode(List<Data> data, int parent) 
{ 
    var parent = data.FirstOrDefault(x => x.ID == parent); 
    var dataItems = data.Where(x => x.Parent == parent); 
    foreach(var dataItem in dataItems) 
    { 
     AddNode(data, dataItem.ID); 
    } 
    Tree.Nodes.Add(parent.Name); 
} 
+0

我已經在我的程序中嘗試過它,但它不能像它應該的那樣工作。所有節點都在同一級別上,只有一個級別。 – Schlinger

+0

私人無效ADDNODE(列表數據,串父,布爾第一) \t \t { \t \t \t變種parentData = data.FirstOrDefault(X => x.IsIn ==親本); \t \t \t var dataItems = data.Where(x => x。IsIn == parent); \t \t \t的foreach(在dataItems變種的DataItem) \t \t \t { \t \t \t \t ADDNODE(數據,dataItem.OID,FALSE); \t \t \t} \t \t \t _tvDatabase.Nodes.Add(parentData.Code); \t \t} – Schlinger

+0

這是您的問題:data.Where(X => x.IsIn ==親本);你需要在lambda上使用GroupEntry的不同屬性。 –