2011-03-28 74 views
0

任何人都可以看到我要去哪裏嗎?代碼應該打開一個xml文檔,然後根據每個節點的內容,使用每個節點/屬性的內文填充ListView的列。列表視圖應該是這樣的:C#:爲什麼這個代碼填充這個listView亂序?

Item1 Item2 Item3 
Item4 Item5 Item6 
Item7 Item8 Item9 

但是它結束了是這樣的:

Item7 Item2 Item5 
Item4 
Item1 

生產這種錯誤的代碼如下:

private void openPasswordFileToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     System.Xml.XmlDocument loadDoc = new System.Xml.XmlDocument(); 
     loadDoc.Load(Application.StartupPath + "\\database.xml"); 


     foreach (System.Xml.XmlNode descNode in loadDoc.SelectNodes("/Database/Account")) 
     { 
      lvItem = listView1.Items.Insert(index, descNode.Attributes["Description"].InnerText); ; 
     } 
     foreach (System.Xml.XmlNode userNode in loadDoc.SelectNodes("/Database/Account")) 
     { 
      lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, userNode.Attributes["Username"].InnerText)); ; 
     } 
     foreach (System.Xml.XmlNode passNode in loadDoc.SelectNodes("/Database/Account")) 
     { 
      lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, passNode.Attributes["Password"].InnerText)); ; 
     } 
     foreach(System.Xml.XmlNode node in loadDoc) 
     { 
      index += 1; 
     } 
    } 

回答

4

不知道的結構的XML文件,但你的foreach代碼是錯誤的。 如果您嘗試爲每個父項添加子項,則

foreach (System.Xml.XmlNode descNode in loadDoc.SelectNodes("/Database/Account")) 
    { 
     lvItem = listView1.Items.Insert(index, descNode.Attributes["Description"].InnerText); ; 
     lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, userNode.Attributes["Username"].InnerText)); ; 
     lvItem.SubItems.Add(new ListViewItem.ListViewSubItem(lvItem, passNode.Attributes["Password"].InnerText)); ; 
    } 
+0

TY SIR!精湛的工作。 – Stev0 2011-03-28 05:07:36