Jag har börjat pula med min första Winforms applikation i VB.NET och försöker databinda XML till en ListBox. Fortsätter trixa. Om du binder ett dataset borde du väl sätta DataMember till namnet på den DataTable du använder? På vad ska jag sätta DataMember? ListBox har ingen sådan property. Löste problemet.Databinda XML eller DataSet till ListBox
XML-filen läser jag in från en URL med XmlTextReader.
XML
<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?
Sv: Databinda xml till ListBox
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.Sv: Databinda xml till ListBox
Sv: Databinda xml till ListBox
Sv: Databinda xml till ListBox
Det skulle vara:
"delivery.id" och "delivery.description", eller så tar jag bort delivery som item.