使用C#在datagrid中显示xml

时间:2011-05-26 06:20:09

标签: c# .net xml winforms datagridview

<customers>
<customer ID="C001">
<name>Acme Inc.</name>
<phone>12345</phone>
<address>value</address>
</customer>
<customer ID="C002">
<name>Star Wars Inc.</name>
<phone>23456</phone>
<address>value</address>
</customer>
</customers>

dataGridView1.DataMember = "customer";

当我将datamember作为“customer”时,它显示了datagrid中xml的所有子节点。如何仅显示ID&amp;网格中的name

4 个答案:

答案 0 :(得分:2)

要显示Id和Name,您可以执行以下操作:

var document = XDocument.Load(@"C:\1.xml");

var customers = document.Descendants("customer")
    .Select(arg =>
        new
        {
            Id = arg.Attribute("Id"),
            Name = arg.Descendants("name").Select(x => x.Value).Single()
        })
    .ToList();

dataGridView1.DataSource = customers;

答案 1 :(得分:2)

在将所需列的可见性设置为true后,您可以在网格中加载xml文档,否则为false。

DataSet data = new DataSet();
            data.ReadXml("C:\\xml.xml");
            this.dataGridView1.DataSource = data;
            this.dataGridView1.DataMember = "customer";
            foreach (DataGridViewColumn column in this.dataGridView1.Columns)
            {
                if (column.Name == "ID" || column.Name == "name")
                    column.Visible = true;
                else
                   column.Visible = false;

            }

答案 2 :(得分:1)

您可以关闭不需要的列,例如:

dataGridView1.Columns["address"].Visible = false; 
//or
dataGridView1.Columns[2].Visible = false; 

对于任何情况来说,这不是美丽的方式。但它是即时的。

答案 3 :(得分:0)

使用数据集读取xml,然后将Grid的数据源设置为数据集表。