我看了,找不到答案,我确定我只是没有找到合适的关键词,哈哈。
我有一个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>
当我正常显示时,我将它放在网格视图中。 我不得不在其他地方上传图片,网站不会让我把它放在这里。 enter link description here
现在我要做的就是make是当我点击一个按钮时我只能显示某些电影类型。比如说,单击一个按钮,只显示“动作”的电影。
我已经找到了相关的信息并得到了我只能选择操作的地方。我让它们弹出消息框'
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,并且喜欢以前的所有信息。
如果我没有清楚解释,请说出来,正如我之前所说,我知道我不是最好的解释事情。
答案 0 :(得分:1)
一种方法是将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 + "*')";