Problem mit Ereignisreihenfolge in Webform mit Menu-Control und Multiview

24/02/2009 - 19:14 von Hendrik Lindemann | Report spam
Hallo liebe NG,

ich beisse mir schon den ganzen Tag die Zàhne an folgendem Problem aus:

Ich habe mir ein Tabstrip mit einem Menucontrol und einem Multiviewcontrol
gebastelt, in den einzelnen Views sollen verschiedene Datagrids angezeigt
werden, die auf dem gleichen Dataset, jedoch mit unterschiedlichen
Parametern, basierend auf der Auswahl im Menu-Control, aufgerufen werden.

Das funktioniert soweit ganz gut, jedoch gelingt es mir nicht, den jeweils
ActiveViewIndex abzurufen, den ich dazu brauche.

Ich habe es mit ViewState probiert:

Protected Sub mnuTabs_MenuItemClick(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.MenuEventArgs) Handles mnuTabs.MenuItemClick

mvwPanes.ActiveViewIndex = Int32.Parse(e.Item.Value)

ViewState("PanelIndex") = Int32.Parse(e.Item.Value)

End Sub


Im Page_load wollte ich es wieder abrufen:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles Me.Load

Dim Objekt_ID As Object

Dim DocClass_ID As Object

If Not Page.IsPostBack Then

ViewState("PanelIndex") = 0

'Objekt_ID = Request.QueryString("Objekte_ID")

End If

Objekt_ID = Request.QueryString("Objekte_ID")

DocClass_ID = ViewState("PanelIndex").ToString

FillObjekteDS(Objekt_ID)

FillDateienDS(Objekt_ID, DocClass_ID)

Me.Title = "Memfis - Dateien " & " ActiveViewIndex: " & DocClass_ID

Leider kriege ich nicht den aktuell ausgewàhlten Wert, sondern den
vorherigen aktiven Wert :-(

Ich habe in beiden Prozeduren mal einen Haltepunkt gesetzt, und
festgestellt, das er mir den Page_Load vor dem mnuTabs_MenuItemClick
feuert - was dieses Verhalten zwar erklàrt, aber mir nicht weiterhilft.

Alternativ hab ich es mit der Eigenschaft NavigateURL probiert, da habe ich
das Problem das er die Auswahl im Menu-Control nicht àndert, und auch das
Ereignis nicht mehr feuert, so dass meine Tabstrip-Funktionalitàt dahin ist.

Wie kann ich dieses Problem lösen?

Vielen Dank für euere Tipps.

mfg

Hendrik Lindemann
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
24/02/2009 - 19:59 | Warnen spam
Hallo Hendrik,

"Hendrik Lindemann" schrieb:

Leider kriege ich nicht den aktuell ausgewàhlten Wert, sondern den vorherigen aktiven Wert :-(

Ich habe in beiden Prozeduren mal einen Haltepunkt gesetzt, und festgestellt, das er mir den Page_Load vor dem
mnuTabs_MenuItemClick feuert



Dennoch ein Link zum besseren Verstàndnis, das wird dich evtl. vor weiteren
Fehlschlàgen bzw. höheren Aufwànden für eine spàtere Umstrukturierung deiner
Anwendung bewahren.

http://msdn.microsoft.com/de-de/lib...78472.aspx
http://www.aspnetzone.de/blogs/pete...gramm.aspx

- was dieses Verhalten zwar erklàrt, aber mir nicht weiterhilft.



Das einzige, was Dir da auf Dauer helfen wird, ist dich mit den Gewohnheiten
von ASP.NET vertraut zu machen.

Da dein Code für mich nicht selbsterklàrend (eigentlich eher ziemlich
verwirrendend ist), rate ich einfach mal:

Du willst die aktivierte View ermitteln?

<MultiView>.GetActiveView()

Was das aber mit dem Menü oder NavigateURL zu tun haben soll, erschließt
sich mir nicht ganz.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen