[ASP.NET] Custom Control update niet gewenst

Pagina: 1
Acties:

  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Ik begin gelijk met wat code:

Visual Basic .NET:
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
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If Page.IsPostBack And Session("Categorie") Then
    If CInt(Session("CategorieID")) > 0 Then
      AddCategorieControls()
    End If
  ElseIf Not Page.IsPostBack Then
    Session("CategorieID") = 0
    Session("Categorie") = False
    Home()
  Else
    Session("Categorie") = False
    Home()
  End If
  SetMenuTree(Session("CategorieID"))
End Sub

Sub lnkbttnHome_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lnkbttnHome.Click
  Session("Categorie") = False
  Session("CategorieID") = 0
  Home()
End Sub

Sub Categorie_Clicked(ByVal sender As Object, ByVal e As System.EventArgs)
  Session("CategorieID") = sender.ID
  AddCategorieControls()
End Sub

Sub SetMenuTree(ByVal CategorieID As Integer)
  Session("CategorieID") = CategorieID
  PanelMenuTree.Controls.Clear()
  Dim MenuTree As New MyWebcontrols.MenuTree
  MenuTree.CategorieID = CategorieID
  AddHandler MenuTree.CategorieClick, AddressOf Categorie_Clicked
  PanelMenuTree.Controls.Add(MenuTree)
End Sub

Mijn site bevat in de linker kolom een Custom MenuTree Control. Als ik op een categorie in de menutree klik dan opent de tree met de categorie waarop geklikt wordt met behulp van de sub Categorie_Clicked.

Klik ik op de linkbutton 'Home' in de navigatie in een andere div als waar de menutree in staat, dan zou de menutree met behulp van sub lnkbttnHome_Click naar de beginsituatie moeten gaan (CategorieID=0), zoals ook de eerste keer dat de pagina wordt opgevraagd gebeurt. Maar er gebeurt niks totdat ik voor de tweede keer op Home klik, dan gaat de menutree wel naar de gewenste situatie.

De subs Home() en AddCategorieControls() hebben geen invloed op het geheel, die heb ik namelijk ook al eens weggelaten, maar daaraan zie ik wel dat mijn 'Content' panel wel reageerd op de eerste klik op home.

Ik kom er maar niet achter waar het fout gaat, omdat debuggen vrijwel niet gaat. Het verschil in de subs is dat de eerste wordt aangeroepen door een event van de menutree zelf en de andere door een linkbutton. Maar naar mijn mening moet dit geen verschil uitmaken...

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


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Dat komt omdat je de wijzigen 'na' de IsPostback uitvoert. Je zult de IPostbackEventHandler moeten implementeren voor de MenuTree control. IPostbackEventHandler.RaisePostBackEvent wordt namelijk uitgevoerd voordat IsPostback van de page en andere controls wordt gezet.

Verder is het gebruik van sessies hiervoor ook niet echt handig. Daarvoor bestaat in asp.net de viewstate. Wil je data 'sharen' tussen controls/HttpModules dan kun je eventueel nog de HttpContext gebruiken.

Nog los van dat Session("Categorie") in de door jouw getoonde code nooit op 'true' wordt gezet.

If it isn't broken, fix it until it is..


  • Swerfer
  • Registratie: Mei 2003
  • Laatst online: 17-11 06:32
Niemand_Anders schreef op vrijdag 27 juni 2008 @ 16:43:
Dat komt omdat je de wijzigen 'na' de IsPostback uitvoert. Je zult de IPostbackEventHandler moeten implementeren voor de MenuTree control. IPostbackEventHandler.RaisePostBackEvent wordt namelijk uitgevoerd voordat IsPostback van de page en andere controls wordt gezet.
Waarom werkt het bij Categorie_Clicked dan wel? Deze wijziging komt toch ook na de postback? Net zoals de sub lnkbttnHome_Click, waarbij het niet werkt...
Nog los van dat Session("Categorie") in de door jouw getoonde code nooit op 'true' wordt gezet.
Deze wordt in de sub AddCategorieControls op true gezet...
Verder is het gebruik van sessies hiervoor ook niet echt handig. Daarvoor bestaat in asp.net de viewstate. Wil je data 'sharen' tussen controls/HttpModules dan kun je eventueel nog de HttpContext gebruiken.
Die sessies zijn een tijdelijke oplossing.

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