показать XML в Datagrid с C # - PullRequest
2 голосов
/ 26 мая 2011
<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», он показывает все дочерние узлы xml в сетке данных. как показать только ID & name в сетке?

Ответы [ 4 ]

2 голосов
/ 26 мая 2011

Чтобы показать только 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;
2 голосов
/ 26 мая 2011

Вы можете загрузить XML-документ в сетку после того, как установите для видимости требуемого столбца значение true, в противном случае - 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;

            }
1 голос
/ 26 мая 2011

Вы можете отключить ненужные столбцы, такие как:

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

Это не самый лучший способ для любого случая.Но это мгновенно.

0 голосов
/ 26 мая 2011

Прочитайте xml, используя набор данных, затем установите источник данных таблицы в таблицу набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...