Hilfe bei XML und LINQ Schachtelung

13/11/2009 - 22:37 von Udo Ewender | Report spam
Guten Abend NG,

ich speichere den Inhalt eines ListViews in eine XML-Datei. Die Spezialitàt
dabei ist, daß ich Groups im LV verwende. Beim speichern gehe ich wie folgt
vor:

.Root.Add(From grp As ListViewGroup In LV.Groups _
Select <Group>
<Header><%= grp.Header %></Header>
<%= From Item As ListViewItem In
grp.Items _
Select <Item>
<ImageIndex><%=
Item.ImageIndex %></ImageIndex>
<%= From SubItem As
ListViewItem.ListViewSubItem In Item.SubItems _
Select <Text><%=
SubItem.Text %></Text> %>
</Item> %>
</Group>)

Das sieht in der resultierenden Datei auch ganz gut aus würde ich sagen.
Beim Einlesen habe ich aber Probleme bei der Zuordnung der Items zu den
Groups. Ich bekomme es einfach nicht hin, vielleicht könnt ihr mir dabei
helfen.

For Each grp In xListView.Descendants("Group")
LV.Groups.Add(New ListViewGroup With { _
.Header = grp.Element("Header")})

For Each Item In grp.Descendants("Item")
LV.Items.Add(New ListViewItem(( _
From SubItem In Item.Descendants("Text") _
Select SubItem.Value).ToArray,
CInt(Item.Element("ImageIndex"))))

Next
Next

Da müßte nun aber noch irgendwie die Gruppenzuordnung rein. Aber wo?

Die Zuordnung alleine könnte wiederrum irgendwie so aussehn:

LV.Items.Add(New ListViewItem With { _
.Group = New ListViewGroup(grp.Element("Header"))})

Hier bekomme ich aber die Items nicht mit dazu rein.

Was ich also brauche ist eine Kombination aus beidem. Ich probiere jetzt
schon seit 2 Stunden verschiedene Varianten aber komme einfach nicht drauf.
Und schön langsam Blick ich vor lauter Klammern nicht mehr durch. Hoffe
jemand mit starker Konzentrationsfàhigkeit findet den Anknüpfunkt. Ich nehme
jetzt erst einmal eine Aspirin...

Freundliche Grüße,

Udo
 

Lesen sie die antworten

#1 Thorsten Doerfler
14/11/2009 - 10:48 | Warnen spam
Udo Ewender schrieb:
Das sieht in der resultierenden Datei auch ganz gut aus würde ich sagen.
Beim Einlesen habe ich aber Probleme bei der Zuordnung der Items zu den
Groups. Ich bekomme es einfach nicht hin, vielleicht könnt ihr mir dabei
helfen.

For Each grp In xListView.Descendants("Group")


Dim lGroup As New ListViewGroup(grp.Element("Header"))

For Each Item In grp.Descendants("Item")


lGroup.Items.Add(New ListViewItem(( _
From SubItem In Item.Descendants("Text") _
Select SubItem.Value).ToArray,
CInt(Item.Element("ImageIndex"))))

Next



LV.Groups.Add(lGroup)
Next




So in der Art sollte es gehen.

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen