Avatar billede fun22 Nybegynder
13. februar 2010 - 11:55 Der er 6 kommentarer og
1 løsning

Kan ikke finde dynamisk oprettede controles i placeholder

Hej E

Jeg har en side hvor jeg opretter en label og en textbox ud fra hver linie i en tekst fil.

Det virker også fint som det skal..

Men når jeg så skal hente værdierne fra textboxene så er der altid 0 controles i min placeholder.controles

Jeg bruger følgende kode til at tilføje controlerne:

Dim addedparam As String = ""

        PlaceHolder.Controls.Add(New LiteralControl("<table>"))

        Do While Not fp.EndOfStream
            Dim line As String = Server.HtmlEncode(fp.ReadLine)
            If line.Contains("{#}") Then
                Dim parmName As String = GetStringInBetween("{#}", "{/#}", line)

                If Not addedparam.Contains(parmName) Then
                    PlaceHolder.Controls.Add(New LiteralControl("<tr>"))

                    PlaceHolder.Controls.Add(New LiteralControl("<td>"))

                    Dim nLabel As New Label
                    nLabel.Text = parmName & ": "
                    nLabel.ID = "l" & parmName

                    PlaceHolder.Controls.Add(nLabel)

                    PlaceHolder.Controls.Add(New LiteralControl("</td>"))
                    PlaceHolder.Controls.Add(New LiteralControl("<td>"))

                    Dim nTextBox As New TextBox
                    nTextBox.ID = "tb" & parmName

                    PlaceHolder.Controls.Add(nTextBox)

                    PlaceHolder.Controls.Add(New LiteralControl("</td>"))
                    PlaceHolder.Controls.Add(New LiteralControl("</tr>"))

                    addedparam = addedparam & "," & parmName

                End If

            End If
        Loop

        PlaceHolder.Controls.Add(New LiteralControl("</table>"))

Og det virker som sagt fint.. Men når jeg så bruger følgende for at finde det som er blevet indtastet i textboxene:

For Each myControle As Control In PlaceHolder.Controls
            i += 1
            ....
        Next

så er der 0 controles i min placeholder. Hvordan kan det være??

Siden laver ikke en postback i mellemtiden.. Først når jeg klikker på en knap laver den en asyncpostback i et updatepanel..

Men uden at få værdierne med..

Nogen der kan gennemskue problemet?
Avatar billede keysersoze Guru
13. februar 2010 - 12:45 #1
du fortæller ikke hvilke events de forskellige ting kører på og hvad der sker i hvert event - men mit gæt er at du ikke sørger for at kontrollerne er oprettet igen når du laver dit asyncpostback.
Avatar billede fun22 Nybegynder
13. februar 2010 - 15:36 #2
Det der sker, er at jeg i en dropdown boks, vælger f.eks "Test", så laver den en postback i og der tilføjes så textbokse alt efter hvad der står i dne tekst fil der bliver indlæst.

Og det virker fint..

Så skriver man så noget i textboksene, og klikker på en knap.

Ved at trykke på den knap laver den så et asyncpostback hvor den så skal finde alle de textbokse der er blevet oprettet i placeholderen..

Det var jo så det jeg havde regnet med at gøre sådan her:

For Each myControle As Control In PlaceHolder.Controls
            i += 1
            ....
        Next

Men det virker jo så ikke.. Men hvad kan det skyldes?
Avatar billede keysersoze Guru
13. februar 2010 - 15:46 #3
som allerede nævnt opretter du sikkert ikke dine kontroller igen ved postback - så opret dine textbokse igen inden du laver din for each.
Avatar billede fun22 Nybegynder
13. februar 2010 - 23:21 #4
Okay, nu har jeg så prøvet at oprette dem igen ved den nye postback, men så har den jo ikke de værdier som jeg har skrevet ind...

Hvis jeg opretter textboksene igen, ved postback, så kan jeg godt fange dem, men deres text property er tom, da de jo lige er blevet oprettet igen..

Hvordan kan jeg komme uden om det??
Avatar billede keysersoze Guru
14. februar 2010 - 01:54 #5
sørg for at din viewstate ikke er disabled, sørg for at oprette dine kontroller i page_load eller page_init og sørg for at dine kontroller får præcis samme id hele vejen igennem.
Avatar billede fun22 Nybegynder
14. februar 2010 - 10:16 #6
Kanont... Jeg skulle bare flytte min oprettelse at kontrollerne fra min button click til page_load...

Smider du et svar?
Avatar billede keysersoze Guru
14. februar 2010 - 10:39 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester