Toon posts:

[ASP.NET] Dynamically Add Webcontrols

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

Ik wil een form maken waarbij ik bij de initiele page_load, 1 button standaard aanmaak. Deze button krijgt vervolgens een EventHandler genaamd button_click() die een nieuwe button op de webform dient neer te zetten.

Alle ID's voor de buttons worden dynamisch gemaakt door middel van een ophogende [i].

Het probleem is echter als dat bij de eerste button_click er wel een nieuwe wordt aangemaakt, maar wanneer ik de nieuwe button indruk dan verschijnt er geen derde button. Sterker nog, als ik dan wederom de eerste knop indruk, van verdwijnt de tweede knop weer! |:( |:(

Hoe zou ik dit het beste kunnen aanpakken zonder gebruik te maken van een visible=true/false loop

-------------------------------------------------------------------------------------
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<%@ Page Language="VB" autoeventwireup="true" %>
<script runat="server">

dim i as integer

sub page_load(sender as object, e as eventargs)
    i = hidden_i.text
    call makeList(i)
end sub

sub button_click(byVal sender as object, e as eventargs)
    hidden_i.text = i+1
    i = hidden_i.text
    call makeList(i)
end sub

function makeList(i)
    dim newbutton as button = new button()
    newbutton.id = "id"&i
    newbutton.text = "text"&i
    addhandler newbutton.click, Addressof button_click
    place.controls.add(newbutton)
end function

</script>
<html>
      <head>
      </head>
<body>
      <form runat="server">
            <asp:placeholder id="place" runat="server"></asp:placeholder>
            <asp:label visible="false" id="hidden_i" text="0" runat="server" />
      </form>
</body>
</html>

Verwijderd

code:
1
2
3
4
sub page_load(sender as object, e as eventargs)
    i = hidden_i.text
    call makeList(i)
end sub


isPostBack?
en wat is hidden_i? een control op de webpagina?

Verwijderd

Topicstarter
hidden_i is een label control op de webpagina die ik hidden heb gemaakt.. hierin wordt de huidige waarde van [i] opgeslagen en bijgewerkt..

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Verwijderd schreef op 10 juli 2003 @ 10:26:
hidden_i is een label control op de webpagina die ik hidden heb gemaakt.. hierin wordt de huidige waarde van [i] opgeslagen en bijgewerkt..
Ooit al gehoord van ViewState?

https://fgheysels.github.io/


Verwijderd

Topicstarter
ja.. viewstate had ook een optie kunnen zijn.. echter zit het probleem niet in het bijwerken van de [i].. dat werkt prima..

het probleem zit hem in het feit dat hij bij het aanmaken van een nieuwe button via de button_click() handler, de knoppen niet goed neerzet

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Verwijderd schreef op 10 July 2003 @ 10:33:
ja.. viewstate had ook een optie kunnen zijn.. echter zit het probleem niet in het bijwerken van de [i].. dat werkt prima..
Weet ik wel. Ik had het er gewoon op dat je beter de middelen gebruikt die voorhanden zijn ipv ranzige oplossingen te gebruiken mbhv hidden controls.
het probleem zit hem in het feit dat hij bij het aanmaken van een nieuwe button via de button_click() handler, de knoppen niet goed neerzet
In de code zoals je die nu hebt, wordt die functie die de buttons maakt iedere keer opgeroepen als je de page laad. Dus ook na een postback.
Ik heb geen ervaring met het dynamisch creeëren van controls in asp.net, maar ik vermoed dat je de nieuwe control ook aan de viewstate zult moeten toevoegen.

De lifetime van een webpagina is immers heel kort. Van zodra hij gecreeërd is, en de response naar de client gestuurd werd, wordt hij immers vernietigd. Webpagina's zijn stateless.

[ Voor 21% gewijzigd door whoami op 10-07-2003 10:43 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
dat lijkt me prima.. er moet immer toch ook een button aangemaakt worden bij een postback

Verwijderd

Topicstarter
kan je een viewstate vullen met de collection van een placeholder dan?

[ Voor 10% gewijzigd door Verwijderd op 10-07-2003 10:51 ]

Pagina: 1