Databinda XML eller DataSet till ListBox
Jag har börjat pula med min första Winforms applikation i VB.NET och försöker databinda XML till en ListBox.
XML-filen läser jag in från en URL med XmlTextReader.
XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | < xml version = "1.0" > < dellist > < delivery > < id >140</ id > < description >Tisdag: Bil 2</ description > < deliverydate >2004-08-10</ deliverydate > </ delivery > < delivery > < id >139</ id > < description >Tisdag: Bil 1</ description > < deliverydate >2004-08-10</ deliverydate > </ delivery > < delivery > < id >142</ id > < description >Onsdag: Bil 2</ description > < deliverydate >2004-08-11</ deliverydate > </ delivery > < delivery > < id >141</ id > < description >Onsdag: Bil 1</ description > < deliverydate >2004-08-11</ deliverydate > </ delivery > </ dellist > </ xml > |
VB.NET kod
<code>
Private Const localURL As String = "http://minsajt/min.xml"
Dim myXmlURLReader As XmlTextReader
myXmlURLReader = New XmlTextReader(localURL)
Dim myDataSet As DataSet = New DataSet
myDataSet.ReadXml(myXmlURLReader)
Me.Label2.Text &= myDataSet.GetXml.ToString & vbCrLf
Me.Label2.Text &= "Processing ..." & vbCrLf & vbCrLf
Me.ListBox1.DataSource = myDataSet
Me.ListBox1.ValueMember = "id"
Me.ListBox1.DisplayMember = "description"
</code>
Försöker alltså databinda till en ListBox. Skriver även ut mitt DataSet som XML i Label2 för att kolla att allt ser OK ut och det gör det.
Om jag sätter min XmlTextReader som DataSource får jag:
"Complex DataBinding accepts as a data source either an IList or an IListSource"
Så istället läser jag in min XML till ett DataSet, men då får jag:
"Could not bind the new display member. Parameter name: newDisplayMember"
Några förslag?
En annan sak är att jag ser i min Task Manager att appen drar iväg med nästan 16MB. Verkar inte det mycket för en liten app?
Svara
Sv: Databinda xml till ListBox
Fortsätter trixa.
Om jag struntar i
Me.ListBox1.ValueMember = "id"
så funkar det utan felmeddelande, men det som visas i ListBoxen är
System.Data.DataViewManagerListItemTypeDescriptor
istället för värdet som finns i "description"
Det jag behöver är alltså att "description" ska visas och id-numret skall vara värdet som jag ska använda när man gjort ett val.
Svara
Sv: Databinda xml till ListBox
Om du binder ett dataset borde du väl sätta DataMember till namnet på den DataTable du använder?
Svara
Sv: Databinda xml till ListBox
På vad ska jag sätta DataMember? ListBox har ingen sådan property.
Svara
Sv: Databinda xml till ListBox
Löste problemet.
Det skulle vara:
"delivery.id" och "delivery.description", eller så tar jag bort delivery som item.
Svara