用C#在datagrid中显示xml

|
<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
name
?     
已邀请:
要仅显示ID和名称,您可以执行以下操作:
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;
    
在将所需列的可见性设置为true或false之后,可以在网格中加载xml文档。
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;

            }
    
您可以关闭不需要的列,例如:
dataGridView1.Columns[\"address\"].Visible = false; 
//or
dataGridView1.Columns[2].Visible = false; 
在任何情况下,这都不是美丽的方式。但这是即时的。     
使用数据集读取xml,然后将网格的数据源设置为数据集表。     

要回复问题请先登录注册