2015-07-21 34 views
0

我正在处理一个代码,其中我正在遍历包含特定文件夹结构的XML文件。我想以表格格式显示文件夹名称和文件。以下是我的代码:无法在Datagridview中查看表的所有行

DataTable dtCheckPropertyOutput = new DataTable(); 
dtCheckPropertyOutput.Columns.Add("Property Name"); 

dtCheckPropertyOutput.Columns.Add("Expected value"); 


string folderName = null; 
string fileName = null; 
// display each folder 
foreach (var folder in mainFolder.Elements()) 
{ 
    DataRow anyRow = dtCheckPropertyOutput.NewRow(); 
    folderName = folder.Attribute("Name").Value; 
    MessageBox.Show(folderName); 

    anyRow["Property Name"] = "Folder"; 

    anyRow["Expected Value"] = folderName; 


    // display each file 
    foreach (var file in folder.Elements()) 
    { 
     fileName = file.Attribute("Name").Value; 
     anyRow["Property Name"] = "File"; 
     anyRow["Expected Value"] = fileName; 
    } 
    dtCheckPropertyOutput.Rows.Add(anyRow); 

    dataGridView1.DataSource = dtCheckPropertyOutput; 

问题是我只能查看xml中最后一个元素,但不能查看所有条目。对于例如我可以查看文件3和文件5只[而不是文件夹1,文件1,文件夹2和文件2]如果XML是如下:

<Root> 
<MainFolder Name="Main Folder"> 
    <Folder Name="Folder1"> 
     <File Name="File1" /> 
     <File Name="File3" /> 
    </Folder> 
    <Folder Name="Folder2"> 
     <File Name="File2" /> 
     <File Name="File5" /> 
    </Folder> 
</MainFolder> 
</Root> 

请,有人帮助我。提前致谢。

回答

0

好的。这只是一个愚蠢的错误。我是C#的新手,我仍在练习各种各样的东西。为了解决这个问题,我刚刚在嵌套的foreach循环开始之前和嵌套的foreach循环结束之前添加了以下两行。

dtCheckPropertyOutput.Rows.Add(anyRow); 
anyRow = dtCheckPropertyOutput.NewRow(); 

我不确定,但请纠正我,让我知道是否有更好的方法来做到这一点。