2016-01-16 220 views
-1

我想在C#中使用字段從我的XML文件中填充組合框,但沒有運氣......我不知道這裏有什麼問題(它不顯示任何內容):從XML填充組合框

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load("Baza_de_cunostinte.xml"); 

     var dataSource = new List<Persoane>(); 
     string PersoanaPlacuta; 

     foreach (XmlNode node in doc.DocumentElement) 
     { 
      string persoanaPlacuta = node["PersoanaPlacuta"].InnerText.Replace("\"", ""); 

      comboBox1.Items.Add(persoanaPlacuta); 
     } 
    } 

這是XML文件:

<root> 
    <Persoane> 
    <Nume>"Bob"</Nume> 
    <IsMale>true</IsMale> 
    <Varsta>30</Varsta> 
    <PersoanaPlacuta>"Iulia"</PersoanaPlacuta> 
    </Persoane> 

    <Persoane> 
    <Nume>"Bogdan"</Nume> 
    <IsMale>true</IsMale> 
    <Varsta>28</Varsta> 
    <PersoanaPlacuta>"Ana"</PersoanaPlacuta> 
    </Persoane> 

</root> 
+0

用戶更改所選項目時正在更改項目,因此基本上,所選項目始終在更改。 –

+0

同時顯示您的XML更清晰您的問題 –

+0

我已經添加它;) – user3063909

回答

0

我不認爲你是在正確的XML節點地址進行搜索。您應該使用完整地址來完成目標節點的查找。

使用XmlNodeList讓所有與詳細地址的節點,然後遍歷其項目:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load("Baza_de_cunostinte.xml"); 

    var dataSource = new List<Persoane>(); 
    string PersoanaPlacuta; 


    XmlNodeList xmlNodeList = doc.SelectNodes("//root//Persoane"); 
    foreach (XmlNode node in xmlNodeList) 
    { 
     string PersoanaPlacuta = node.ChildNodes[3].InnerText.Replace("\"", ""); 
     comboBox1.Items.Add(PersoanaPlacuta); 
    } 
} 

你也可以改變foreach循環是這樣的:

foreach (string PersoanaPlacuta in from XmlNode node in xmlNodeList 
          select node.ChildNodes[3].InnerText.Replace("\"", "")) 
{ 
    comboBox1.Items.Add(PersoanaPlacuta); 
} 

注意:您最好在第一行添加comboBox1.Items.Clear();,否則您將在組合框中獲得重複項目

+0

我已經使用了「字符串persoanaPlacuta =節點[」PersoanaPlacuta「]。InnerText.Replace(」\「」,「」); 「顯示列表框中的名稱,它的工作.... – user3063909

+0

我試圖寫,因爲你說,但它仍然沒有顯示任何東西... – user3063909

+0

@ user3063909所以*它工作*或*仍然沒有顯示任何東西* ? –