[英]c# filter xml file by attribute and show in datagridview
我已經找到了答案,但找不到答案,我確定我只是在尋找正確的關鍵字,哈哈。
我有一個顯示在datagridview中的XML文件,一切正常。 我試圖植入我可以單擊按鈕的位置,並僅使用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>
當我正常顯示時,我會像這樣在網格視圖中顯示它。 我不得不將圖像上傳到其他地方,該網站不允許我將其放在此處。 在此處輸入鏈接說明
現在,我想做的是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,並且更喜歡像以前一樣使用所有信息。
如果我沒有清楚地解釋,請這樣說,就像我在知道我不是最擅長解釋事物之前所說的那樣。
一種方法是將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 + "*')";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.