C# DataGridView 绑定到 XML 子集

发布于 2024-08-03 00:48:11 字数 893 浏览 5 评论 0原文

我需要有条件地填充 DataGridView。数据来自一个 XML 文件,例如,

<?xml version="1.0" standalone="yes"?>
<people>
  <person>
    <name>Bob</name>
    <dogs>
      <dog><name>Rover</name></dog>
      <dog><name>Rex</name></dog>
    </dogs>
  </person>
  <person>
    <name>Jim</name>
    <dogs>
      <dog><name>Duke</name></dog>
      <dog><name>Colin</name></dog>
      <dog><name>Gnasher</name></dog>
    </dogs>
  </person>
</people>

如果我使用以下代码,我可以在 DataGridView 中显示所有狗 - 但我需要将列表限制为特定人拥有的狗。

DataSet ds = new DataSet();
ds.ReadXml("data.xml");

dataGridView1.DataSource = ds;
dataGridView1.DataMember = "dog";

我该怎么做?

谢谢 斯图尔特

I need to populate a DataGridView conditionally. The data comes from one XML file, e.g.

<?xml version="1.0" standalone="yes"?>
<people>
  <person>
    <name>Bob</name>
    <dogs>
      <dog><name>Rover</name></dog>
      <dog><name>Rex</name></dog>
    </dogs>
  </person>
  <person>
    <name>Jim</name>
    <dogs>
      <dog><name>Duke</name></dog>
      <dog><name>Colin</name></dog>
      <dog><name>Gnasher</name></dog>
    </dogs>
  </person>
</people>

If I use the following code I can show all dogs in the DataGridView - but I need to restrict the list to those owned by specific people.

DataSet ds = new DataSet();
ds.ReadXml("data.xml");

dataGridView1.DataSource = ds;
dataGridView1.DataMember = "dog";

How do I do this?

Thanks
Stuart

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾`听者〃 2024-08-10 00:48:11

您可以使用以下代码获取 XElements:

var xml = XDocument.Load(filePath);

var people = xml.Elements("people").Elements("person");
var dogElements = people.Elements("dogs").Elements("dog").Where(p => p.Parent.Parent.Element("name").Value == "Bob");

var dogs = dogElements.Select(d => new {Name = d.Element("name").Value, Owner = d.Parent.Parent.Element("name").Value});

dataGridView1.DataSource = dogs;
dataGridView1.DataMember = "Name";

作为示例,我在这里也选择了狗的主人。

您必须添加对 System.Xml 和 System.Xml.Linq 的引用

You can get the XElements with the following code:

var xml = XDocument.Load(filePath);

var people = xml.Elements("people").Elements("person");
var dogElements = people.Elements("dogs").Elements("dog").Where(p => p.Parent.Parent.Element("name").Value == "Bob");

var dogs = dogElements.Select(d => new {Name = d.Element("name").Value, Owner = d.Parent.Parent.Element("name").Value});

dataGridView1.DataSource = dogs;
dataGridView1.DataMember = "Name";

Just as an example I selected the owner of the dog as well here.

You'll have to add a reference to System.Xml and System.Xml.Linq

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文