2011-03-28 64 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