Hej, Jag antar att du laddar upp den i Page_Load?! Ett alternativ då är att skriva: Du kan t.ex. spara den i viewstate (c#: this.ViewState["nyckel"] = serialiserbart objekt) EDIT: Nu har jag provar och det går sådär.... Ni kan glömma detta.Behålla värden i ArrayList vid postback
På en sida har jag två listboxar där jag flyttar över användare från den ena till den andra.
När jag gör det vill ja samtidigt uppdatera en ArrayList.
Problemet är att den töms varje gång sidan gör postback.
Hur kan jag behålla värden i en ArrayList vid postbacks?
/JockeSv: Behålla värden i ArrayList vid postback
<code>
Sub Page_Load()
If Not Page.IsPostBack Then
...
End If
End Sub
</code>Sv: Behålla värden i ArrayList vid postback
t.ex.
IList MinLista;
//Spara
MinLista = new ArrayList();
this.ViewState["min_listas_nyckel"] = MinLista;
//Ladda
if(this.ViewState.Contains("min_listas_nyckel"))
{
MinLista = (IList)this.ViewState["min_listas_nyckel"];
}
else
{
//Listan fanns inte i viewstate
}
Viewstate är en teknik för att serialisera objekt + att skicka texten som blir efter serialisering fram och tillbaka mellan webbläsaren och servern. Fördelen framför sessions är att viewstate håller sig just en instans av sidan, men sessions som bygger på cookies håller sig till hela webbläsaren. Problem uppstår således om du försöker spara den här informationen i sessions och du har två instanser uppe samtidigt av samma sida. Om du ändrar på listan i det ena "fönstret" så kommer listan att vara ändrad i det andra också så fort du har gjort en postback.
Sv:Behålla värden i ArrayList vid postback
Detta var svar på Hans inlägg, såg inte ditt Oskar. Ska kolla på det.
--------------------------------
Hur menar du då?
Jag har en knapp som jag klickar på, då flyttas användaren över samtidigt som jag vill uppdatera ArrayListen.
Så onClick eventet gör jag typ:
myArrayList.Add, eller .Remove
Jag har nog fått hjärnsläpp....Sv:Behålla värden i ArrayList vid postback
Jag har för dålig kunskap för att se vad jag gör för fel...
Använder VB.NET skall sägas.
Så här har jag gjort:
Längst upp på sidan, på klassnivå har jag lagt:
Private ilRemovedAdmins As IList
Sen har har lagt i Page_Load:
If Not Page.IsPostBack Then
ilRemovedAdmins = New ArrayList
Me.ViewState("RemovedAdmins") = ilRemovedAdmins
End If
Sen på knappen där jag flyttar användare från en box till en annan, anropar jag bara en funktion, så här:
Private Sub btnRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemove.Click
'Check that item is selected.
If Not lstAdministrators.SelectedIndex = True Then
removeItem(lstAdministrators, lstUsers)
End If
End Sub
"removeItem" ser ut så här. Det fungerar i sig, alltså den flyttar användaren korrekt till andra boxen.
Men jag förstår inte var, och hur, jag ska få in den koden jag fick av dig Oskar???
Private Sub removeItem(ByVal lstRemoveFrom As ListBox, ByVal lstAddTo As ListBox)
Dim iIndex As Integer
Dim i As Integer
Dim lstItem As New ListItem
Dim ListItem As ListItem
Try
'Check that item is selected.
If Not lstRemoveFrom.SelectedIndex = True Then
'Delete selected rows
For i = lstRemoveFrom.Items.Count - 1 To 0 Step -1
If lstRemoveFrom.Items(i).Selected Then
lstRemoveFrom.Items.RemoveAt(i)
End If
Next i
'Reload users combobox
loadUsers()
End If
Catch err As Exception
'blabla
Finally
'Clear
lstItem = Nothing
ListItem = Nothing
End Try
End Sub
Hjälp please!!
/Jocke
Sv: Behålla värden i ArrayList vid postback
Det visade sig att jag inte behövde gör på detta sätt över huvud taget.
DB-killarna ändra en del i proceduren och det förenklade livet för mig....:)
/Jocke