簡體   English   中英

c#按屬性過濾xml文件並在datagridview中顯示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM