Ik probeer een DropDownlist op een webform te vullen met gegevens.
Deze gegevens worden iets wat omslachtig aangeleverd (heb ik vrijwel geen invloed op, komt uit andere module). Het aanleveren gaat als volgt:
Elk dataitem bevindt zich in een hashtable, waarin voor elke property een item in de hashtable bestaat.
De lijst van dataitems die aan de dropdownlist moeten worden toegevoegd zijn toegevoegd in een array => De array is gevuld met verschillende hashtables welke weer gevuld zijn met de daadwerkelijke data
Op zich zover geen problemen, echter probeer ik deze array met hashtables als data source in te stellen bij een DropDownList, wat op zich ook geen probleem is, echter het op de juiste manier eruit halen van de data voor de Key en Value kolom wel.
Als ik de volgende code gebruik om de data eruit te halen krijg ik de foutmelding:
"DataBinder.Eval: AppName.DataDBItem bevat geen eigenschap met de naam Item("Name"). "
DataDBItem is een eigen class welke inherits van een Hashtable.
De array welke aan de datasource wordt gekoppeld is als volgt gedeclareerd:
Dit was even wat speudo code uit de module waarop ik geen wijzigingen kan aanbrengen. objObjects krijg ik aangeleverd vanuit de module.
Dit is de code om de DropDownList te vullen.
Echter wanneer ik via code het volgende uitvoer, krijg ik geen foutmelding, maar gewoon de juiste waarde:
Om de eerste naam eruit te halen (objObjects bevat >0 items)
Ik heb al gekeken om de gegevens eruit te halen met de DataBinder.Eval(Container.DataItem, "Name"), echter werkt dit ook niet (foutmelding dat deze property niet bestaat).
Ook heb ik al gekeken om iets met de iCollection te doen van Values van de hashtable, maar hierbij lukt het mij niet om op een of andere manier de iCollection met een bepaalde indexed-parameter de gegevens op te halen.
Volgens mij moet het toch mogelijk zijn om op deze manier gegevens uit de hashtables te halen? Ik weet dat er betere manieren zijn (zoals het anders aangeleverd krijgen van de gegevens, maar helaas heb ik hierop geen invloed
).
Ook als ik ga zoeken op internet met de combinaties "DataValueField hashtable" of Datavaluefield icollection" etc krijg ik geen antwoord op de vraag, wel om een enkele hashtable aan een datasource te hangen, maar niet een array van hashtables.
Deze gegevens worden iets wat omslachtig aangeleverd (heb ik vrijwel geen invloed op, komt uit andere module). Het aanleveren gaat als volgt:
Elk dataitem bevindt zich in een hashtable, waarin voor elke property een item in de hashtable bestaat.
De lijst van dataitems die aan de dropdownlist moeten worden toegevoegd zijn toegevoegd in een array => De array is gevuld met verschillende hashtables welke weer gevuld zijn met de daadwerkelijke data
Op zich zover geen problemen, echter probeer ik deze array met hashtables als data source in te stellen bij een DropDownList, wat op zich ook geen probleem is, echter het op de juiste manier eruit halen van de data voor de Key en Value kolom wel.
Als ik de volgende code gebruik om de data eruit te halen krijg ik de foutmelding:
"DataBinder.Eval: AppName.DataDBItem bevat geen eigenschap met de naam Item("Name"). "
DataDBItem is een eigen class welke inherits van een Hashtable.
De array welke aan de datasource wordt gekoppeld is als volgt gedeclareerd:
code:
1
2
3
| Dim objObjects() As DataDBItem objObjects = objTempObjects.ToArray(GetType(DataDBItem)) |
Dit was even wat speudo code uit de module waarop ik geen wijzigingen kan aanbrengen. objObjects krijg ik aangeleverd vanuit de module.
Dit is de code om de DropDownList te vullen.
code:
1
2
3
4
| cboList.DataSource = objObjects ' (Dit is de array met hashtables)
cboList.DataTextField = "Item(""Name"")"
cboList.DataValueField = "Item(""ID"")"
cboList.DataBind() |
Echter wanneer ik via code het volgende uitvoer, krijg ik geen foutmelding, maar gewoon de juiste waarde:
code:
1
| Dim strName As String = objObjects(0).Item("Name") |
Om de eerste naam eruit te halen (objObjects bevat >0 items)
Ik heb al gekeken om de gegevens eruit te halen met de DataBinder.Eval(Container.DataItem, "Name"), echter werkt dit ook niet (foutmelding dat deze property niet bestaat).
Ook heb ik al gekeken om iets met de iCollection te doen van Values van de hashtable, maar hierbij lukt het mij niet om op een of andere manier de iCollection met een bepaalde indexed-parameter de gegevens op te halen.
Volgens mij moet het toch mogelijk zijn om op deze manier gegevens uit de hashtables te halen? Ik weet dat er betere manieren zijn (zoals het anders aangeleverd krijgen van de gegevens, maar helaas heb ik hierop geen invloed
Ook als ik ga zoeken op internet met de combinaties "DataValueField hashtable" of Datavaluefield icollection" etc krijg ik geen antwoord op de vraag, wel om een enkele hashtable aan een datasource te hangen, maar niet een array van hashtables.