14. februar 2007 - 12:01Der er
6 kommentarer og 1 løsning
Visning af multiview via session
Prøver at koble multiview og session sammen, således at en bestemt side vises udfra sessions værdien.
Men når jeg trykker history back så ændrer session sig og de tidligere views bliver vist. Det er ikke meningen.
Bruger jeg session alene, så forsvinder session værdien ikke og jeg kan bruge den til vise bestemte lbl, panel etc. afhængig af sessions værdi.
Men det ville være lidt smart, hvis man kunne bruge multiview til det samme.
Nemlig at uanset hvor mange gange man trykker tilbage vises det samme view fra mulitiview - nemlig udfra den værdi som er i session.
Så hvordan gøres det?
Her følger min kode:
Siden er opbygget med view med hver sin knap som forøger værdien i en session. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)) Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.Cache.SetNoStore()
If Page.IsPostBack = False Then Session("view") = 0 MultiView1.ActiveViewIndex = Session("view") Response.Write("Session : " & Session("view")) End If
If Page.IsPostBack = True Then MultiView1.ActiveViewIndex = Session("view") End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click If Page.IsPostBack = True Then Session("view") = 1 MultiView1.ActiveViewIndex = Session("view") Response.Write("Session : " & Session("view")) End If End Sub
Det er fordi at sessionen gemmer en værdi. Denne værdi ændres ikke til tidligere værdier selv om du trykker back. Du kan ikke gøre det på den måde du gerne vil. Jeg vil nok anbefale dig at lade være med at bruge session. Men bruge et hidden field og så fjerne Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)) Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.Cache.SetNoStore() Medmindre det gør tingene uhensigtmæssige for dig.
dr_chaos -> session bruges til UserId, så det er jeg ikke meget for at putte i et hidden field, og i dette tilfælde til at holde styr på, hvad som skal vises.
Er det helt umuligt at holde fast på et View ved history back?
så lykkedes det at holde fast i view alt efter sessions værdi.
If Page.IsPostBack = True Then Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)) Response.Cache.SetCacheability(HttpCacheability.NoCache) Response.Cache.SetNoStore()
If Session("Id") = 0 Then MultiView1.ActiveViewIndex = 0 End If If Session("Id") = 1 Then MultiView1.ActiveViewIndex = 1 End If If Session("Id") = 2 Then MultiView1.ActiveViewIndex = 2 End If If Session("Id") = 3 Then MultiView1.ActiveViewIndex = 3 End If If Session("Id") > 3 Then MultiView1.ActiveViewIndex = 4 End If
Response.Write("Session : " & Session("Id")) End If
og
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Session("Id") = Session("Id") + 1 End Sub
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.