Avatar billede lisby Nybegynder
07. november 2003 - 10:43 Der er 4 kommentarer og
1 løsning

Variabel forsvinder efter postback

Hej. Jeg har en DataGrid, hvor indhold fra en databasetabel vises. I DataGrid'et kan man vælge f.eks. at 'edit' eller 'delete' data fra tabel.

På samme side er der en DropDownList, hvor man kan vælge navn på den række man ønsker vist i DataGrid.

Jeg har en BindData-metode, som binder data til DataGrid. Så har jeg en global variabel, "NAVN", som er det navn DataGrid skal bindes med.

Navnet kommer fra min DropDownList, hvis metode efter valg ser således ud:

Public Sub ddChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim nr As Int32 = ddSignatur.SelectedIndex
        NAVN = NAVNTABEL(nr - 1)
        ddSignatur.SelectedIndex = -1
        BindData()
End Sub

(Grunden til at jeg trækker 1 fra nr er at der på den første plads i DropDownList står "Vælg navn...")

Herefter bindes DataGrid korrekt med det valgte navn, men  så kommer vi til mit problem:

Når jeg så trykker på 'Edit' eller 'Delete' forsvinder indhold i DataGrid, d.v.s. indhold i min navn-variabel bliver slettet. Den vil jeg gerne have bevaret. Iøvrigt ser min PageLoad således ud:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            FyldDropDown()
            BindData() 
        End If
End Sub

Af globale variable har jeg:

Dim NAVN As String
Dim NAVNTABEL() As String = getNavne()

Er der nogen som kan hjælpe?
Avatar billede lisby Nybegynder
07. november 2003 - 10:44 #1
Jeg anvender VB.NET.
Avatar billede thor.ostergaard Nybegynder
07. november 2003 - 14:22 #2
Det er en egenskab ved web-applikationer! Variable huskes kun når applikationen kører - dvs. når siden genereres på serveren. Det betyder altså at mellem postbacks dør dine "globale" variable. Du har 3 metoder til at huske ting mellem postbacks:
1) Application variable - huskes så længe applicationen (her serveren) kører
2) Session variable - huskes så længe brugerens session lever
3) Viewstate variable - huskes så længe brugeren er på samme side

Du sætter en viewstatevariabel sådan her:
Viewstate("MitVariabelNavn") = Variabel

Håber du kan bruge det.
Avatar billede chanlo Nybegynder
08. november 2003 - 00:29 #3
kan man ikke bare gøre variablen statisk ??
altså: protected static xx = xx
Avatar billede lisby Nybegynder
08. november 2003 - 22:08 #4
tak for forklaringen thor. Viewstate var lige nøjagtig det jeg havde brug for! send lige et svar, så jeg kan give dig dine velfortjente point.
Avatar billede thor.ostergaard Nybegynder
09. november 2003 - 07:43 #5
Herligt at høre - og her kommer et svar.
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