C#:为什么填充此listView的代码出现了问题?
有人能看出我哪里出了问题吗?代码应该打开一个xml文档,然后根据每个节点的内容,用每个节点/属性的innertext填充ListView的列。列表视图应如下所示:C#:为什么填充此listView的代码出现了问题?,c#,xml,listview,C#,Xml,Listview,有人能看出我哪里出了问题吗?代码应该打开一个xml文档,然后根据每个节点的内容,用每个节点/属性的innertext填充ListView的列。列表视图应如下所示: Item1 Item2 Item3 Item4 Item5 Item6 Item7 Item8 Item9 Item7 Item2 Item5 Item4 Item1 但结果是这样的: Item1 Item2 Item3 Item4 Item5 Item6 Item7 Item8 I
Item1 Item2 Item3
Item4 Item5 Item6
Item7 Item8 Item9
Item7 Item2 Item5
Item4
Item1
但结果是这样的:
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;
}
}
不确定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)); ;
}
不确定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)); ;
}