c#通过属性过滤XML文件并显示在datagridview中

本文关键字:显示 datagridview 文件 XML 属性 过滤 | 更新日期: 2023-09-27 17:49:45

我已经看过了,找不到答案,我敢肯定我只是没有寻找正确的关键字,哈哈。

我有一个XML文件,我在datagridview中显示,这一切都很好。我试图植入在哪里我可以点击一个按钮,并"重新加载"只有xml文件的某些部分的datagridview。

我会更好地描述。请耐心听我说,我不擅长解释。

这是我的xml文件的布局。

<?xml version="1.0"?>
<Movies>
  <Name Name="Saw" Type="Horror" Year="2004-10-29" Overview="Overview">Saw</Name>
  <Name Name="Saw II" Type="Horror" Year="2005-10-28" Overview="Overview">Saw II</Name>
  <Name Name="Speed" Type="Action" Year="1994-06-10" Overview="Overview">Speed</Name>
  <Name Name="Batman Begins" Type="Action" Year="2005-06-17" Overview="Overview">Batman Begins</Name>
</Movies>

当我正常显示时,我将它放在一个网格视图中,像这样。我不得不把图片上传到别处,网站不让我放在这里。在这里输入链接描述

现在我要做的是,当我点击一个按钮时,我只能显示某些电影类型。例如,单击一个按钮,只显示"动作"电影。

我已经找到了这方面的信息,并得到了我可以只选择动作的地方。我让它们在消息框中弹出

                XmlDocument xml = new XmlDocument();
            xml.Load("movie.xml");
            XmlNodeList xnList = xml.SelectNodes("/Movies/Name[@Type='Action']");
            foreach (XmlNode xn in xnList)
            {
                MessageBox.Show(xn.InnerText);
            }

这实际上从图像中显示了2部动作电影。但是我不知道如何只使用这些条目重新加载datagridview,并且更喜欢像以前一样使用所有信息。

如果我没有解释清楚,请告诉我,正如我之前所说的,我知道我不擅长解释事情。

c#通过属性过滤XML文件并显示在datagridview中

一种方法是将xml加载到DataTable中。然后你可以使用它的内存过滤功能来过滤网格。

DataSet ds = new DataSet();
ds.ReadXml("Movies.xml");
this.dataGridView.DataSource = ds.Tables[0];

然后你可以像这样过滤

private void FilterByType(string type)
{
            var dataView = ((DataTable) this.dataGridView.DataSource).DefaultView;
            dataView.RowFilter = "(Type = '" + type + "')";
}

按子字符串过滤使用以下语法

dataView.RowFilter = "(Type LIKE *'" + substring + "*')";