Avatar billede killer_r Nybegynder
12. februar 2007 - 19:04 Der er 4 kommentarer og
1 løsning

Huske variabel mellem postbacks i control

Jeg har skrevet det følgende Control i ASP.NET, men jeg har lidt problemer... Det er som om den ikke "husker" i hvilken uge den står... Når man klikker på ImageButton'en ser det ikke ud til at IntLastKvarter er lig 10, som jeg synes den burde... Måske kan du se hvad der er galt...

<%@ Control Language="VB" ClassName="UgeSkema" %>

<script runat="server">
    Private IntKvarter As Integer
    Private IntLastKvarter As Integer

    Public Property Kvarter() As Integer
        Get
            Return IntKvarter
        End Get
        Set(ByVal value As Integer)
            SetKvarter(value)
        End Set
    End Property

    Private Sub SetKvarter(ByVal kvarter As Integer)
        IntKvarter = kvarter
        IntLastKvarter = kvarter - 1
    End Sub
   
    Private Sub RenderSkema()
        MsgBox("Last: " & IntLastKvarter & vbCrLf & "Now: " & IntKvarter)
        UgeSkemaLink.InnerText = IntKvarter & ". Kvarter"
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        If Not Page.IsPostBack Then
            SetKvarter(11)
            RenderSkema()
        End If
    End Sub
   
    Private Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
        SetKvarter(IntLastKvarter)
        RenderSkema()
    End Sub
</script>
   
<asp:ImageButton ID="ImageButton3" runat="server" ImageUrl="~/Billeder/icon_back_small.gif" OnClick="ImageButton1_Click" />
<a id="UgeSkemaLink" href="#" runat="server" title="Print-venlig version">HyperLink</a>
Avatar billede dr_chaos Nybegynder
12. februar 2007 - 19:10 #1
brug
    Public Property Kvarter() As Integer
        Get
            Return viewstate("IntKvarter") AS Integer
        End Get
        Set(ByVal value As Integer)
            SetKvarter(value)
        End Set
    End Property
  Private Sub SetKvarter(ByVal kvarter As Integer)
        viewstate("IntKvarter") = kvarter
        IntLastKvarter = kvarter - 1
    End Sub
Avatar billede killer_r Nybegynder
12. februar 2007 - 19:21 #2
Hvis jeg gør sådan her:
Public Property Kvarter() As Integer
    Get
        Return ViewState("IntKvarter") 'As Integer
    End Get
    Set(ByVal value As Integer)
        SetKvarter(value)
    End Set
End Property

Private Sub SetKvarter(ByVal kvarter As Integer)
    ViewState("IntKvarter") = kvarter
    ViewState("IntLastKvarter") = kvarter - 1
End Sub

Og ellers udskifter alle IntLastKvarter og IntKvarter med ViewState virker det!

Kan du ikke forklare mig hvad den der ViewState er for en størrelse? Er det noget det samme som en session eller hvordan hænger det lige sammen?
Avatar billede dr_chaos Nybegynder
12. februar 2007 - 19:47 #3
Du kan læse alt om det her:
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx
Hvis du vil have mindre detaljeret viden skal du bare søge på "viewstate" på google.
Avatar billede dr_chaos Nybegynder
12. februar 2007 - 19:55 #4
tillader mig lige at ligge et svar :)
Avatar billede killer_r Nybegynder
13. februar 2007 - 23:16 #5
Mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester