[Asp.net]Waarde ophalen uit dynamische dropdownlist

Pagina: 1
Acties:
  • 157 views sinds 30-01-2008
  • Reageer

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 13-02 15:11
Mijn probleem is dat ik geen waarde kan ophalen uit een dynamische dropdownlist.
Ik heb de volgende dropdownlist:

code:
1
2
3
4
5
<asp:DropDownList ID="stationlist" runat="server" AutoPostBack="True" DataSourceID="dropdownSqlDataSource"  DataTextField="idGMS" DataValueField="idGMS">
</asp:DropDownList>

<asp:SqlDataSource ID="dropdownSqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:GladheidConnectionString %>"
        SelectCommand="SELECT DISTINCT [idGMS] FROM [verificatie] ORDER BY [idGMS]"> </asp:SqlDataSource>


Dat staat in mn default.aspx. Als ik nu in de default.aspx.vb het volgende uitvoer:
code:
1
2
3
            Dim var As String
            var = Me.stationlist.SelectedValue
            Response.Write("deze waarde is geselecteerd:" & var)


Dan geeft hij niets terug. Nu heb ik gelezen dat dat komt doordat mn control dynamisch is. Maar de oplossing hiervoor heb ik niet kunnen vinden of begrijp ik niet helemaal. (weinig programmeer ervaring). Als ik wat hulp hiervoor kan krijgen zou ik dat erg waarderen :). Alvast bedankt

edit: eerste stukje code aangepast

[ Voor 19% gewijzigd door DarkShadow op 26-09-2006 14:58 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:58

mulder

ik spuug op het trottoir

Ik denk dat je gewoon je DataValueField moet zetten. (.SelectedText zal nu al niet leeg zijn)

oogjes open, snaveltjes dicht


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 13-02 15:11
Don Facundo schreef op dinsdag 26 september 2006 @ 14:20:
Ik denk dat je gewoon je DataValueField moet zetten. (.SelectedText zal nu al niet leeg zijn)
wat bedoel je hier precies mee?

Verwijderd

In je select haal je idGMS niet op... Daarom is deze dus leeg (ook wel te zien in de gegenereerde html-code).

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:58

mulder

ik spuug op het trottoir

Je code is sowieso een puinhoop. Er staan 2 dropdownlists, met verwijzing naar meerdere datasources en er is maar 1 datasource gedefineerd. Een dropdownlist heeft een DataValue (bv een LokatieID) en een DataText (de getoonde tekst, bv Lokatienaam). Die 2 velden moeten aanwezig zijn in je datasource (bv een query of een collectie objecten)

oogjes open, snaveltjes dicht


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 13-02 15:11
Ik zal zo de code even wat duidelijker maken en netter. Ik zie idd dat het een chaos is. Overigens vult hij de dropdownlists gewoon wel. Ik kan alleen zelf niet een value selecteren op de manier wat ik in mijn 2e stukje code beschrijf.

edit: het eerste stuk code is nu aangepast. Ik heb idd 2 dropdownlists, en ze worden beide gewoon goed gevult. Het probleem is dat ik in de default.aspx.vb geen selectedvalue kan uitlezen.

[ Voor 29% gewijzigd door DarkShadow op 26-09-2006 14:59 ]


Verwijderd

Waar vraag je de SelectedValue op?
Als het tijdens het laden van de pagina is, is de lijst misschien nog niet gevuld.

Of roep je hem tijdens een OnSelectedValue_Changed (ongeveer) event?

Verwijderd

In de gegenereerde code moet een <select> <option value='...'> </select>
staan, met op de ... een waarde...

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 13-02 15:11
Verwijderd schreef op dinsdag 26 september 2006 @ 15:07:
Waar vraag je de SelectedValue op?
Als het tijdens het laden van de pagina is, is de lijst misschien nog niet gevuld.

Of roep je hem tijdens een OnSelectedValue_Changed (ongeveer) event?
code:
1
2
3
        Private Sub Page_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not Page.IsPostBack Then BuildCharts()
        End Sub


het tweede stukje code staat in buildcharts(). Maar aangezien die dropdownlists aangemaakt worden in default.aspx weet ik niet wanneer die precies gevuld worden. Ik zal idd hier ook aan te denken.

Verwijderd

Denk dat je het in de event onselectedvaluechanged (oid) moet afvangen en niet in de page_load...

[ Voor 4% gewijzigd door Verwijderd op 26-09-2006 16:15 ]


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 13-02 15:11
Verwijderd schreef op dinsdag 26 september 2006 @ 15:51:
In de gegenereerde code moet een <select> <option value='...'> </select>
staan, met op de ... een waarde...
dat staat er ook wel, de dropdownlists worden prima gevuld. Dat is ook niet mn vraag :)

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 13-02 15:11
code:
1
2
3
        Private Sub Page_load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
        BuildCharts()
        End Sub


Als ik "If Not Page.IsPostBack Then" weghaal zoals in het stukje code hierboven. En ik selecteer een nieuwe waarde in mn dropdownlist, dan geeft hij ineens wel de variabele door :).
Het enige is dus dat ik op de een of andere manier moet forceren dat hij bij het laden van de pagina direct een selected value van de dropdownlist heeft.

Verwijderd

Als de index verandert, is het een postback, aangezien autopostback aan staat.
DarkShadow schreef op dinsdag 26 september 2006 @ 16:21:
Het enige is dus dat ik op de een of andere manier moet forceren dat hij bij het laden van de pagina direct een selected value van de dropdownlist heeft.
Wat bedoel je hier mee :? Als je hem de eerste keer laadt, heb je nog geen selectedindex.

Je kunt het IMO toch beter afvangen in de selectedindexchangedevent ipv de pageload, is een stuk netter.
Pagina: 1