[ASP.NET] Probleem met sessie-logica en user controls

Pagina: 1
Acties:

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:29
Ik ben nu even aan het experimenteren met het bouwen van een dynamische pagina. De hoofdpagina is default.aspx, met daarin 2 PlaceHolders. Via twee knoppen kunnen die placeholders gevuld worden met een user control, waarvan ik de naam in een sessievariabele heb staan. Die methode wordt aangeroepen zodra ik op een knop op default.aspx klik. Probleem is nu dus, dat als i kop een button klik op de user control, dat beide usercontrols verdwijnen. Ik nu dus het idee dat ik dit probleem niet met sessie up kan lossen. Of wel? Wat doe ik verkeerd?

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
// Rechter knop is bijna hetzelfde, alleen Session right dan
private void ButtonLeft_Click(object sender, System.EventArgs e)
{
    // Session left is the ascx to place in the left placeholder
    Session[ "left" ] = ListBox1.SelectedValue.ToString();
    placeControls();
}

void placeControls()
{
    if( Session[ "left" ] != null  )
    {
        placeControl( "PlaceHolderLeft", (string)Session[ "left" ] );
    }
    
    if( Session[ "right" ] != null )
    {
        placeControl( "PlaceHolderRight", (string)Session[ "right" ] );
    }           
}

void placeControl( string c, string s )
{
    PlaceHolder p = new PlaceHolder();
    p = (PlaceHolder)FindControl( c );
    System.Web.UI.ControlCollection controlCollection = p.Controls;
    Control control = LoadControl( s );
    controlCollection.Add( control );
}
Page Load is leeg

[ Voor 4% gewijzigd door sig69 op 11-06-2004 13:53 ]

Roomba E5 te koop


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Ik ben geen held met .NET (waarmee wel trouwens ;) ), maar moet je in je page load niet gewoon een call naar placecontrols opnemen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:26

gorgi_19

Kruimeltjes zijn weer op :9

bigbeng schreef op 11 juni 2004 @ 16:03:
Ik ben geen held met .NET (waarmee wel trouwens ;) ), maar moet je in je page load niet gewoon een call naar placecontrols opnemen?
Mja, eigenlijk moet je die controls iedere keer in de init aanmaken. ASP.Net is nu doodleuk vergeten dat hij in de vorige request die controls had aangemaakt.

offtopic:
whoami: mhuahahahahha >:)

[ Voor 7% gewijzigd door gorgi_19 op 11-06-2004 16:09 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:33
Je dynamisch geladen controls zullen na een postback foetsie zijn natuurlijk.

Je zult na een postback dus iedere keer je control-collection moeten opnieuw opbouwen.

Misschien vind je hier wel wat nuttige info. (Ik heb het zelf nog niet gelezen, documentje pas ontdekt. :P)

gorgi_19, je moet niet altijd geniepig voorkruipen nu je mod bent he. :(

[ Voor 12% gewijzigd door whoami op 11-06-2004 16:06 ]

https://fgheysels.github.io/


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:29
Je dynamisch geladen controls zullen na een postback foetsie zijn natuurlijk.
Ja dat begreep ik al, vandaar die sessies. Ik kna dan wel weer in de page_load de user controls toevoegen, maar ja dan heb ik er twee (warvan er 1 een stap chterloopt). Zal eens naar dat viewstate geburen kijken.

Roomba E5 te koop


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:26

gorgi_19

Kruimeltjes zijn weer op :9

sig69 schreef op 11 juni 2004 @ 16:15:
[...]
Ja dat begreep ik al, vandaar die sessies. Ik kna dan wel weer in de page_load de user controls toevoegen, maar ja dan heb ik er twee (warvan er 1 een stap chterloopt). Zal eens naar dat viewstate geburen kijken.
8)7

Dat ze in een sessie staan, wil niet zeggen dat ze dan ook in de controlcollection staan.

Hint: Gebruik Page_load en Page.IsPostback en bouw hier je controlcollection in op.

[ Voor 10% gewijzigd door gorgi_19 op 11-06-2004 16:17 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 11:33
sig69 schreef op 11 juni 2004 @ 16:15:
[...]
Ja dat begreep ik al, vandaar die sessies. Ik kna dan wel weer in de page_load de user controls toevoegen, maar ja dan heb ik er twee (warvan er 1 een stap chterloopt). Zal eens naar dat viewstate geburen kijken.
Met ViewState kan je ook 'state' bewaren, maar dan per pagina.
Het is dus zowiezo al beter om ViewState te gebruiken in dit geval ip SessionState, omdat je die controls toch niet meer nodig hebt als je op een andere pagina zit.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:26

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 11 juni 2004 @ 16:19:
[...]


Met ViewState kan je ook 'state' bewaren, maar dan per pagina.
Het is dus zowiezo al beter om ViewState te gebruiken in dit geval ip SessionState, omdat je die controls toch niet meer nodig hebt als je op een andere pagina zit.
Nadeel van viewstate alleen is dat een pagina vrij vlot vrij groot kan worden en dus traag op een aantal verbindingen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 14:29
Goed, wat ik ervan begrepen heb is dat ik bij een post de usercontrols van de placeholders in de viewstate stop, en die er bij de Page_Init weer uithaal en aan de controlcollection toevoeg. Klopt dat?

Roomba E5 te koop

Pagina: 1