2012-09-06 52 views
0

我正在使用DevExpress的TreeList與C#。我有這樣的場景,我有兩張桌子。 Table # 1包含目錄信息和Table # 2包含文件信息。名爲Parent的列是放置目錄/文件的目錄。TreeList中的相同ID錯誤

Folder Table 
ID Parent Name 
1  1  Folder1 
2  1  Folder2 
3  2  Folder3 

File Table 
ID Parent Name 
1  1  file1.txt 
2  2  file2.txt 
3  2  file3.txt 

我在dt

DataTable dt 
ID Parent Name 
1  1 Folder1 
2  1 Folder2 
3  2 Folder3 
1  1 file1.txt 
2  2 file2.txt 
3  2 file3.txt 

存儲表和做這樣的事情

treelist.datasource = dt; 
treelist.parentfieldname = "Parent"; 

我想表明在treelist這兩個文件和文件夾。這不起作用,因爲我具有相同的文件和文件夾ID。任何人都可以提出任何簡單的解決方案

回答

1

我發現了一個快速簡便的解決方案,我在dt

Folder Table 
ID Parent Name 
1  1  Folder1 
2  1  Folder2 
3  2  Folder3 

File Table 
ID Parent Name 
4  1  file1.txt 
5  2  file2.txt 
6  2  file3.txt 

添加列dt

DataTable 
ID OrigID Parent Name 
1  1  1  Folder1 
2  2  1  Folder2 
3  3  2  Folder3 
4  1  1  file1.txt 
5  2  2  file2.txt 
6  3  2  file3.txt 

合併兩個表寫了如下相同的行

treelist.datasource = dt; 
treelist.parentfieldname = "Parent"; 

問題解決了!

1

我相信,在這種情況下,您應該執行dynamical data loading而不是使用bound mode手動解決文件/文件夾關係。

相關鏈接:
How to: Load Data Dynamically via Events
Tree Generation Algorithm in the XtraTreeList

+0

'XtraTreeList'中的樹生成算法適用於單個表,但不適用於多個表,因爲您的ID相同。我認爲我現在應該手動創建treelist,不應該把它作爲數據源 – AndroidLearner

+1

@AndroidLearner:我已經提到了上述相同的想法:綁定模式在這種情況下不起作用,因爲這是「生成算法」特定的,因此您應該使用「動態加載」 – DmitryG

+0

我必須從表中加載數據,而不是從目錄加載數據。我在樹中加載的不是文件和文件夾,我只是提到了這個場景,因爲它很容易理解。 – AndroidLearner