[ASP.NET] Dynamisch controls genereren

Pagina: 1
Acties:

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
In een panel (panel1) op een ASP.NET webform staat een textbox (txt1), een button en een label (lblCount). Als de gebruiker op de button klikt wordt er dynamisch een nieuwe textbox (txt2) gegenereerd onder de bestaande. De label, die standaard de waarde '1' heeft wordt verhoogd naar '2' omdat er nu twee textboxen zijn.

Deze code hangt onder het Onclick-event van de button:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'de nieuwe textbox moet 24 eenheden lager komen dan de textbox erboven
Dim iTop As Integer = 16 + (CInt(lblCount.Text) * 24)

'Count wordt 1 opgehoogd
lblCount.Text = CInt(lblCountAant.Text) + 1

'Nieuwe textbox
Dim txt As New TextBox
txt.ID = "txtKosten" & lblKostenAant.Text
txt.Width = txt.Width.Pixel(100)
txt.Style("position") = "Absolute"
txt.Style("TOP") = iTop & "px"
txt.Style("LEFT") = "208px"
Panel1.Controls.Add(txt)


Dit gaat allemaal goed, totdat ik nogmaals op de button klik. De tweede textbox zou moeten blijven staan maar deze verdwijnt. Er komt wel een nieuwe textbox onder de positie van de oude textbox die er niet meer is.

Het moet toch mogelijk zijn om een nieuwe textbox dynamisch te genereren terwijl de oude blijft staan?

Verwijderd

Nadat je op de knop heb gedrukt, wordt er 1 textbox toegevoegd, omdat je in die postback 1 control toevoegd aan de control hierarchy. Als je vervolgens weer op de knop drukt, heb je weer de control hierarchy zonder de laatst toegevoegde textbox. Hier voeg je dus de 2e keer weer een textbox aan toe, en je zult nog steeds 1 textbox houden.

Je zult op de een of andere manier ergens bij moeten houden (viewstate, ...) hoeveel textboxes je hebt toegevoegd, zodat je na een postback deze opnieuw kunt toevoegen, en eventueel een extra textbox indien je op de button gedrukt hebt.

Update:
Oh, en als je dit echt wil doen, kun je wellicht het best even kijken naar DynamicControlPlaceHolder of iets dergelijks (volgens mij van Denis Bauer - weet niet zeker). Hiermee kun je als ik het goed heb precies bereiken wat jij wil bereiken.

[ Voor 19% gewijzigd door Verwijderd op 08-05-2004 14:03 ]


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Verwijderd schreef op 08 mei 2004 @ 14:01:
Je zult op de een of andere manier ergens bij moeten houden (viewstate, ...) hoeveel textboxes je hebt toegevoegd, zodat je na een postback deze opnieuw kunt toevoegen, en eventueel een extra textbox indien je op de button gedrukt hebt.
In principe hou ik dit nu al bij in het label 'lblCount'. Naar het opnieuw toevoegen heb ik ook al gekeken maar ten eerste is dit niet netjes als hij dit bij elke postback moet doen, daarnaast moet ik dan ook weer de waardes afvangen en opnieuw in de textboxen vullen.