[ASP.NET] Dynamisch velden creeren en data uitlezen, hoe?

Pagina: 1
Acties:

  • Goldme
  • Registratie: September 2000
  • Laatst online: 21-08 13:42
Ik ben op dit moment bezig met asp.net en ben tegen een probleem aangelopen.

Ik heb namelijk een asp-pagina waarop de web controls kwa aantal kunnen varieren. Afhankelijk van het aantal vragen bijvoorbeeld wordt er een vraag-label uitgeprint en een antwoord-textbox zodat de gebruiker zijn antwoord kan intypen.

Alleen is het probleem hier: ik kan dan wel de velden automatisch aanmaken, ik kan er niet automatisch een id aan toe wijzen dus zoiets als:

code:
1
2
3
4
5
<%
for(int i=0;i<10;i++)
{
%>
    <A href="mijnlink" id="<%=i%>" runat="server" ><%=naam%></A>


De opgegeven ID wil de server niet accepteren omdat die nog niet vaststaat.
En aangezien ik velden geen ID kan toewijzen kan ik die velden ook niet aanmaken laat staan uitlezen.

Ik was het volgende van plan:

Lees de velden uit(wiens aantal kan varieren) en zet die data in een Session op de webserver zodat de volgende pagina of handler die data uit kan lezen.

Een oplossing zou zijn om de velden via de parameters uit te lezen die meegestuurd worden met de url maar dat probeer ik nu te laten liggen om te kijken of het niet simpeler kan via web forms.

Ik zou het erg op prijs stellen als iemand hier een oplossing voor heeft.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Doe jij nu ASP.NET of ASP?

Blijkbaar gebruik je ASP.NET op de 'oude' ASP manier....

https://fgheysels.github.io/


  • Goldme
  • Registratie: September 2000
  • Laatst online: 21-08 13:42
whoami schreef op 22 September 2003 @ 15:30:
Doe jij nu ASP.NET of ASP?

Blijkbaar gebruik je ASP.NET op de 'oude' ASP manier....
hoe bedoel je "oude manier"?

Ik kan de code in de codebehind doen of gewoon tussen de HTML, dus ik gebruik gewoon ASP.NET.

Waar refereer jij naar?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

In ASP.Net voeg je controls (in dit geval een Hyperlink-control) toe aan de controlcollection van de Page / Usercontrol class.

En dat is exact wat je niet doet.

Echter, ik vraag me af waarom je van een hyperlink een servercontrol wil maken.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
Protected Overrides Sub CreateChildControls()
            Dim L As Integer

            For L = 0 To 10
                Dim __textbox As TextBox = New TextBox
                __textbox.ID = "melp" & L
                __textbox.CssClass = "spef"
                Me.Controls.Add(__textbox)
            Next
End sub

Vergelijk mijn code met jouw code. Mijn code is de ASP.Net manier; jouw code de ASP manier.

Sowieso is je code vreemd.. Je krijgt bij alle anchors dezelfde naam?
Ik kan de code in de codebehind doen of gewoon tussen de HTML, dus ik gebruik gewoon ASP.NET.
Dan is mijn volgende vraag: Als je nog steeds op de oude manier coded; waarom doe je dan de moeite om over te stappen naar ASP.Net en blijf je niet bij ASP?

[ Voor 101% gewijzigd door gorgi_19 op 22-09-2003 15:59 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Goldme
  • Registratie: September 2000
  • Laatst online: 21-08 13:42
gorgi_19 schreef op 22 September 2003 @ 15:46:
In ASP.Net voeg je controls (in dit geval een Hyperlink-control) toe aan de controlcollection van de Page / Usercontrol class.

En dat is exact wat je niet doet.

Echter, ik vraag me af waarom je van een hyperlink een servercontrol wil maken.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
Protected Overrides Sub CreateChildControls()
            Dim L As Integer

            For L = 0 To 10
                Dim __textbox As TextBox = New TextBox
                __textbox.ID = "melp" & L
                __textbox.CssClass = "spef"
                Me.Controls.Add(__textbox)
            Next
End sub


Sowieso is je code vreemd.. Je krijgt bij alle anchors dezelfde naam?


[...]

Dan is mijn volgende vraag: Als je nog steeds op de oude manier coded; waarom doe je dan de moeite om over te stappen naar ASP.Net en blijf je niet bij ASP?
Die anchor was gewoon een voorbeeldje, in het echt zou het gaan om textvelden en een knop wiens events in de codebehind worden afgehandeld. In dit geval zou hij de velden uitlezen en die in de Session stoppen voor latere processing, ik dacht dat als dat mogelijk was dat veel overzichtelijkere code oplevert in plaats van de antwoorden later uit de request-parameters te lezen.

De code staat in de pagina zelf omdat ik niet wist hoe ik de controls op de goede positie in de uitvoerpagina kreeg.Door jouw post weet ik nu beter(alleen weet ik nog niet waar de controls op het scherm verschijnen met jou code dat moet ik nog zo regelen dat ze op de goede positie verschijnen).

Wat ik straks kan doen is dus bijvoorbeeld de controls, gemaakt zoals jij het voorstelt, doorlopen en de data collecten en verder gaan met de uitvoering.

Dank je wel voor je post.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

In dit geval zou hij de velden uitlezen en die in de Session stoppen voor latere processing, ik dacht dat als dat mogelijk was dat veel overzichtelijkere code oplevert in plaats van de antwoorden later uit de request-parameters te lezen.
Yuk. Waarom session? Lijkt me redelijk pagina gebonden; een viewstate acht ik dan ook beter geschikt hiervoor; als je het uberhaupt al nodig hebt.
Door jouw post weet ik nu beter(alleen weet ik nog niet waar de controls op het scherm verschijnen met jou code dat moet ik nog zo regelen dat ze op de goede positie verschijnen).
Hang ze aan de controlcollection van een panel / placeholder, al naar gelang de htmloutput die je rondom je control nodig hebt. (de panel genereert <div></div> tags; de placeholder niet).

Eventueel maak je er een custom control van; heb je ook geen problemen meer om deze op de juiste plaats te zetten.

Sowieso kan je ook een usercontrol aan de controlcollection van een panel / placeholder hangen.
Wat ik straks kan doen is dus bijvoorbeeld de controls, gemaakt zoals jij het voorstelt, doorlopen en de data collecten en verder gaan met de uitvoering.
Visual Basic .NET:
1
2
3
4
5
6
7
Private Sub Page_Load(sender as object, e as EventArgs) Handles Mybase.Load
    If Not Page.IsPostBack Then
        Dim __textbox as Textbox = Ctype(Me.FindControl("melp1"))
        Dim __StringFromTextbox as string = __textbox.Text
        ' Overige code.
    End if
End sub

[ Voor 72% gewijzigd door gorgi_19 op 23-09-2003 00:52 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1