Toon posts:

[ASP.NET - VB] Waarde uit repeater opvragen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik haal gegevens uit een database die ik in een dataset gooi en vervolgens aan een Repeater koppel. Ik gebruik de repeater voornamelijk om database rijen weer te geven. Wat ik voor elkaar probeer te krijgen is om een enkele waarde dat ook in de repeater weergegeven wordt op te vragen en als variabele te gebruiken. In dit voorbeeld wil ik dus van elke Repeater Item de toernooiID kunnen gebruiken.
Visual Basic .NET:
1
2
3
4
5
6
'' dataset vullen etc.
DataBind()

For i = 0 To (Repeater1.Items.Count - 1)
    Response.write(Repeater1.Items(i).DataItem("toernooiID"))
Next

Als ik deze code uitvoer krijg ik de foutmelding:
De objectvariabele of With block-variabele is niet ingesteld

Als ik dezelfde code vóór de databind() uitvoer dan krijg ik geen foutmelding, maar is Repeater1.Items.Count ook 0 (nul). Iemand idee wat ik fout doe?

Verwijderd

Je moet DataItem eerst even casten naar het correcte type. Dit type is afhankelijk van je DataSource, voor Dataset moet je (uit mijn hoofd) DataRowView hebben.

Verwijderd

Verwijderd schreef op donderdag 02 juni 2005 @ 21:46:
Ik haal gegevens uit een database die ik in een dataset gooi en vervolgens aan een Repeater koppel.
...
Als ik dezelfde code vóór de databind() uitvoer dan krijg ik geen foutmelding, maar is Repeater1.Items.Count ook 0 (nul). Iemand idee wat ik fout doe?
Probeer onderstaande code eens, is waarschijnlijk idd omdat je vergeet te casten en/of Response.Write een String verwacht (is dat zo?).

Visual Basic:
1
2
3
4
5
6
7
8
9
Dim item As RepeaterItem
'alle items overlopen van rptXXX
For Each item in rptXXX.Items
   'enkel de items en alternatingitems overlopen
   If item.ItemType = ListItemType.Item Or item.ItemType = ListItemType.AlternatingItem Then
      'control zoeken, casten en Text teruggeven aan Response.Write methode
      Response.Write( CType( item.FindControl("toernooiID"), teCastenType ).Text )
   End If
Next


Waarbij teCastenType natuurlijk het type wordt, zoals CheckBox of Label. Een alternatief voor FindControl methode is (met x=kolomnr en y=controlnr/kolom):
item.Cells(x).Controls(y)
Verder kun je niet met toernooiID werken indien je geen control gebruikte voor weergave. Dan kun je naar het item verwijzen dmv kolomnummer/rij (x, beginnende van 0) met onderstaande regel:
item.Cells(x)
Natuurlijk moet je ook dan nog casten.

hoop dat dit helpt.