无法在数据视图中查看表的所有行

本文关键字:数据 视图 | 更新日期: 2023-09-27 18:03:59

我正在编写一段代码,其中我正在遍历包含特定文件夹结构的XML文件。我想以表格格式显示文件夹名称和其中的文件。下面是我的代码:

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中的最后一个元素,而不是所有条目。例如,如果xml如下所示,我只能查看文件3和文件5[但不能查看文件夹1,文件1,文件夹2和文件2]:

<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>

拜托,谁来帮帮我。

无法在数据视图中查看表的所有行

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

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

我不确定,但请纠正我,让我知道是否有更好的方法。