[ASP.NET] Event 'komt te laat'

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Misschien een rare titel, maar het probleem is het volgende:

Ik heb een Custom control (een menu tree-view) waarbij een event wordt getriggerd als er op een menuitem geklikt wordt. De eventhandler moet daarbij de menutreeview voorzien van een nieuwe CategorieID, maar de menutreeview lijkt dan al te zijn gerenderd zodat de nieuwe CategorieID van mijn menutreeview niet wordt meegenomen. Code ter verduidelijking:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Partial Class Masterpages_Default
  Inherits System.Web.UI.MasterPage

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    MenuTreeView.CategorieID = 0
    AddHandler MenuTreeView.CategorieClick, AddressOf Categorie_Clicked
  End Sub

  Sub Categorie_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
    MenuTreeView.CategorieID = sender.ID
    ' Hier wordt de nieuwe CategorieID geset, maar de menutreeview
    ' blijft CategorieID 0 gebruiken...
    ' Deze sub wordt wel afgehandeld, en ook als ik de sender.ID handmatig
    ' een nummer geef, wordt de menutreeview niet geupdate...
  End Sub

End Class

De page_load wordt eerst uitgevoerd, en daarna Categorie_Clicked. Maar hoe krijg ik het voor elkaar dat de menutreeview pas gerenderd wordt na Categorie_Clicked?

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Razr
  • Registratie: September 2005
  • Niet online
Logisch, want alles in je page_load wordt telkens opnieuw uitgevoerd. Je zou kunnen checken of het postback betreft of niet.

Als je dan het volgende in je page_load zou zetten (ken alleen c#)

C#:
1
2
3
4
if(!Page.IsPostback)
{
     //hier je code die je nu in je load hebt
}


Dan wordt je categorieID dus niet opnieuw gezet bij een postback, en zou je event goed moeten werken.

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Het ligt niet aan de postback, als ik de code verander in onderstaande, dan wekt het nog steeds niet...
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Partial Class Masterpages_Default
  Inherits System.Web.UI.MasterPage

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostback Then
        MenuTreeView.CategorieID = 0
    End If
    AddHandler MenuTreeView.CategorieClick, AddressOf Categorie_Clicked
  End Sub

  Sub Categorie_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
    MenuTreeView.CategorieID = sender.ID
    ' Hier wordt de nieuwe CategorieID geset, maar de menutreeview
    ' blijft CategorieID 0 gebruiken...
    ' Deze sub wordt wel afgehandeld, en ook als ik de sender.ID handmatig
    ' een nummer geef, wordt de menutreeview niet geupdate...
  End Sub

End Class

Ik ga eens kijken wat er gebeurt als ik alles uit de masterpage haal...

edit:

Het heeft niet met de masterpage te maken, want als ik de code niet in een master zet werkt de event ook niet goed...

[ Voor 6% gewijzigd door Swerfer op 22-06-2008 14:55 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 14-11 22:24
Zit dit alles in je masterpage of ook een gedeelte in je content page? Want de masterpage Page_Load komt volgens mij na de Page_Load van je content page. Zou kunnen dat daar wat in fout gaat :?

Hail to the king baby!


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
urk_forever schreef op zondag 22 juni 2008 @ 14:55:
Zit dit alles in je masterpage of ook een gedeelte in je content page? Want de masterpage Page_Load komt volgens mij na de Page_Load van je content page. Zou kunnen dat daar wat in fout gaat :?
Zie de edit van mijn post boven die van Urk

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 18-11 13:45
Hij moet opnieuw getekend worden. Met een grid of een repeater gaat dat door DataBind() aan te roepen. Die doet opnieuw de page_load dus moet je idd daar kijken of het geen page.postback is.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:52

gorgi_19

Kruimeltjes zijn weer op :9

Buiten dit hoor je normaliter je events ook in createchildcontrols / init te definieren.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Ik ben na wat gezoek op Google erachter gekomen dat ik Implements IPostBackDataHandler met wat extra code moest toevoegen aan mijn custom control. Na dit gedaan te hebben met dit als voorbeeld, wordt de menutreeview wel geupdate, maar pas na de tweede postback :(
Het lijkt alsof de viewstate(?) één postback achterloopt.

Ik moet dus een extra render of zo voor elkaar zien te krijgen...

[ Voor 7% gewijzigd door Swerfer op 22-06-2008 16:45 ]

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:52

gorgi_19

Kruimeltjes zijn weer op :9

.

[ Voor 99% gewijzigd door gorgi_19 op 22-06-2008 17:13 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Het was niet de Implements IPostBackDataHandler die ervoor zorgde dat na 2 postbacks de menutree wel reageerde (zou na 1 postback moeten zijn), maar ik had in mijn public property geen gebruik gemaakt van de viewstate.

Nu moet ik nog een manier vinden dat de menutree direct update nadat er op een categorie is geklikt, en niet steeds 1 klik achterloopt.

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com


  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Waarom stel je de eventhandler iedere page_load opnieuw in?

[ Voor 26% gewijzigd door eek op 23-06-2008 06:51 ]

Skill is when luck becomes a habit.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:52

gorgi_19

Kruimeltjes zijn weer op :9

eek schreef op maandag 23 juni 2008 @ 06:51:
Waarom stel je de eventhandler iedere page_load opnieuw in?
Omdat die niet meegaat in de viewstate?
Swerfer schreef op zondag 22 juni 2008 @ 18:16:
Nu moet ik nog een manier vinden dat de menutree direct update nadat er op een categorie is geklikt, en niet steeds 1 klik achterloopt.
Bind je hem opnieuw na het klikken?

[ Voor 40% gewijzigd door gorgi_19 op 23-06-2008 08:28 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Ik heb inmiddels een oplossing gevonden, ik vang de event al af in de custom control, wis met me.controls.clear() alle controls en roep daar de sub CreateChildControls aan die de nieuwe menutree samensteld.

Daarna komt een raiseevent om de rest van de pagina up te daten, waarbij ik de huidige CategorieID opsla in een session, en bij page.ispostback stuur ik die CategorieID weer naar de custom control.

Werkt nu perfect, al zou het volgens mij ook eenvoudiger moeten lukken...

Home Assistant | Unifi | LG 51MR.U44 | Volvo EX30 SMER+ Vapour Grey, trekhaak | SmartEVSE V3 | Cronos Crypto.com

Pagina: 1