自动在数据网格视图上添加一行 C#

Automatically add a row on Data Grid View C#

基本上我创建的表单应用程序允许上传 XML 文件,然后 XML 文件的内容显示在数据网格视图中。

这是我搜索和打开文件的代码。

        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Filter = "XML | *.xml";
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            XmlDocument xDOC = new XmlDocument();
            xDOC.Load(ofd.FileName);

            int n = dataGridView1.Rows.Add();
            dataGridView1.Rows[n].Cells[0].Value = xDOC.InnerText;

        }

这里是 XML:

<people>
 <person> David </person>
 <person> Joey </person>
 <person> Adam </person>
</people>

我设法让它工作了,但由于某种原因,XML 文件的所有内容都显示在同一行!帮忙?!

目前您正在同一单元格中添加文件的全部内容 (InnerText)。想要的Node的内容你得取。

像这样的东西应该可以工作:

    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "XML | *.xml";
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        XmlDocument xDOC = new XmlDocument();
        xDOC.Load(ofd.FileName);

        //We loop through each person node of our document
        foreach(XmlNode node in xDOC.SelectNodes("people/person"))
        {
            //And add its content to a new row
            int n = dataGridView1.Rows.Add();
            dataGridView1.Rows[n].Cells[0].Value = node.InnerText;
        }

    }

我们所做的是将我们想要的项目的 XPath 提供给 SelectNode 函数。将其视为文件路径,但 Xml.

我会建议您查看 System.Linq.Xml namespace and particularly the XDocument class,我认为它提供了一种更简单的使用 Xml 的方法。