Archief - [PROG][ASP.NET] For each dropdownlist in... ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Krayola

Legacy Member
Ik heb hier in ASP.Net een pagina met 99 verschillende dropdownlists. Nu ik zou graag wanneer ik op de knop 'Opslagen' druk alle waarden van die dropdownlists doorgeven naar een andere klasse. Ik zou dan graag via een lus werken dat ik alles in een keer kan doorgeven.
Ik dacht dit zo te doen:
Code:
Sub opslagenPlaatsen(ByVal sender As Object, ByVal e As EventArgs)
        Dim plop As Integer = 0
        For Each ddlRes As DropDownList In Controls
            If ddlRes.SelectedItem.Text = "Nog vrij" Then
                plop = plop + 1
            Else
                data.opslagenZitplaatsen(ddlRes.DataValueField, Convert.ToInt16(ddlRes.SelectedValue.Substring(6, 2)))
            End If
        Next
    End Sub

Dit geeft bij het uitvoeren dan een fout op die 'Controls'. Dit had ik natuurlijk verwacht aangezien het maar een probeersel was. Ik heb al wat op internet gezocht. Maar ik weet dus niet goed hoe ik in zo'n lus alle dropdownlists kan doorlopen.
Ze hebben allemaal een id gekregen nl. van plaats01 tot en met plaats99.
Iemand die weet hoe ik dit beter kan oplossen?

th43ns

Legacy Member
Alle dropdownlists in een array zetten en ze dan zo aanspreken via een teller?

BloodSeaker

Legacy Member
EuroPimp zei:
Ik heb hier in ASP.Net een pagina met 99 verschillende dropdownlists. Nu ik zou graag wanneer ik op de knop 'Opslagen' druk alle waarden van die dropdownlists doorgeven naar een andere klasse. Ik zou dan graag via een lus werken dat ik alles in een keer kan doorgeven.
Ik dacht dit zo te doen:
Code:
Sub opslagenPlaatsen(ByVal sender As Object, ByVal e As EventArgs)
        Dim plop As Integer = 0
        For Each ddlRes As DropDownList In Controls
            If ddlRes.SelectedItem.Text = "Nog vrij" Then
                plop = plop + 1
            Else
                data.opslagenZitplaatsen(ddlRes.DataValueField, Convert.ToInt16(ddlRes.SelectedValue.Substring(6, 2)))
            End If
        Next
    End Sub

Dit geeft bij het uitvoeren dan een fout op die 'Controls'. Dit had ik natuurlijk verwacht aangezien het maar een probeersel was. Ik heb al wat op internet gezocht. Maar ik weet dus niet goed hoe ik in zo'n lus alle dropdownlists kan doorlopen.
Ze hebben allemaal een id gekregen nl. van plaats01 tot en met plaats99.
Iemand die weet hoe ik dit beter kan oplossen?


Als je ze dan toch zo nummert, doe dan van plaats1 tot plaats99 en dan het volgende (sorry voor c#, ma VB.NET is al te lang geleden en for lussen schrijven die nie kloppen is ook niet je dat)
Code:
protected void opslagenPlaatsen(object sender,EventArgs e){
    int plop = 0;
    for(int i=0; i<100; i++)
    {
         DropDownList ddl = (DropDownList)this.Page.FindControl("plaats" + i.ToString());
         if (ddl.SelectedValue == "Nog vrij")
         {
               plop++;
         }
         else
         { //nog iets
         }
     }
}

UniKorn

Legacy Member
Het is veel gemakkelijker om gewoon elke control te testen op type "Dropdownlist" en er dan iets mee te doen imho :)

BloodSeaker

Legacy Member
UniKorn zei:
Het is veel gemakkelijker om gewoon elke control te testen op type "Dropdownlist" en er dan iets mee te doen imho :)

Feit, maar als je dan toch weet dat je ze zo nummert, dan weer niet denk ik. Vermits je dan niet moet loopen over elke mogelijke control op je pagina?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan