hallå hallå! När du postar tillbaka kommer alltid din Page_Load att utföras, om du i den hanterar din placeholder och dess data så kommer de inte försvinna. Hur är det du går tillväga? yepp jag har en code-behind fil. har förstått så långt att jag måste återskapa alla paneler i OnInit eller Page_Load för att man ska få med de nya värdena om det har blivit förändrade sedan senaste postbacken. Men jag ska säga att det är jag inte säker på heller... Viewstaten skall ju sköta detta åt dig. Använder du Page.IsPostBack i din Page_Load? jo fast eftersom jag skapar panelerna nynamiskt med för informations skull så den lösning jag kommit fram till är att spara en arraylist i en sessionsvariabel och bygga om alla paneler utifrån informationen i sessionsvariabel men det känns som en GRYMT rutten lösning...återskapa innehåll i placeholder
Jag har en ASP.NET sida där jag har en placeholder som jag fyller med paneler som i sin tur innehåller ett par textfält för att fylla i information.
så långt funkar allt jätte bra, har inga problem med att fylla placeholdern med paneler från början. problemet uppstår så fort jag gör en postback, då tömms innehållet i placeholdern. Har läst lite på webben och listat ut att jag på något sätt måste återskapa alla paneler eftersom page-objektet dör när sidan skickas till browsern vad jag kan förstå.
min fråga är hur jag ska gå till väga för att återskapa de paneler som jag hade i min placeholder innan jag gjorde postbacken.
MVH
KalleSv: återskapa innehåll i placeholder
Kör du Code Behind?
//Johan NSv: återskapa innehåll i placeholder
Det jag har gjort nu är att jag har skapat en egen struktur där jag sparar den informationen som jag behöver för att återskapa panelerna i. Sen har jag en array som jag just nu sparar i en sessions-variabel för att sedan läsa upp den och återskapa panelerna utifrån detta. Det lilla jag har hunnit sitta och labba med det så fungerar det lite sådär och jag måste säga att det känns som en extremt klumpig lösning...Sv: återskapa innehåll i placeholder
C#
<code>
if(!IsPostPack)
{
... 'Fyll i data i dina paneler m.m.
}
</code>
VB .Net
<code>
if not IsPostPack)
... 'Fyll i data i dina paneler m.m.
End if
</code>
//Johan NSv: återskapa innehåll i placeholder
<code>
Dim myPanel As New Panel()
Dim myTextBox As New Textbox()
Dim myButton As New Button()
Dim myId As String = Guid.NewGuid.ToString()
myTextbox.text = "en liten text"
myTextbox.id = myId + "_text"
myButton.Text = "Min knapp"
myButton.id = myId + "_button"
myPanel.id = myId + "_panel"
myPanel.Controls.Add(myTextbox)
myPanel.Controls.Add(myButton)
placeholder.Controls.Add(myPanel)
</code>
När jag sedan gör en postback så tömms min placeholder på de paneler. Om jag återskapar paneler i antingen Page_Load eller OnInit så fungerar allt jätte bra i teorin =) jag sparar en array med id nummer och återskapar panelerna utifrån de id nummren. Detta fungerar nästan, får det säkert att fungera om man sätter sig lite längre och labbar med det men det känns ju inte som någon speciellt bra lösning att spara detta i en session-variabel men det kanske är bästa sättet...Sv: återskapa innehåll i placeholder