2012-09-06 53 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