Har inte riktigt fattat detta med med viewstate än. Jag har en dropdown i en userkontroll som jag i koden fyller med värden. Jag skickar med det valda värdet till en ny sida. Om jag nu klickar på backknappen, eller skapar en response.redirect till den förra sidan så vill jag att det värde man valt skall vara kvar i ddl:en. Kan du beskriva i tur och ordning exakt var du klickar, vilka postbacks som görs etc? Ok. Skall försöka. Jag tror inte att den gör någon postback när du går tillbaka, ispostback är 100% buggfri (man kan skicka som get/post till webbservern, det är "väldigt" stor skillnad på dem så ispostback stämmer alltid), en gissning är att internet explorer bara laddar sidan utan att göra någon postback helt enkelt. Inte i någon frame. Men det är ju uppbyggt med en masterpage (index.aspx) och tillhörande web user controls. Ex.. Konstigt. Nu funkar det om jag klickar på explorerns tillbakaknapp men inte via Linkbuttonen. Varför blir vilkoret "IF NOT page.isPostback then" sant vid en response.redirect. Postback görs ju.. Då borde den inte sätta detta vilkor till sant. Eller? >Varför blir vilkoret "IF NOT page.isPostback then" sant vid en response.redirect. Postback görs ju.. Då borde den inte sätta detta vilkor till sant. Eller? Behålla värdet
Jag har satt ddl:ens viewstate = true.
[edit]
Såg att postback gjordes vid klick på explorerns back knapp, samt vid klick på min link button som gör repsonse.redirect men trotts att jag har:
<code>
Private sub page_load()
If not IsPostBack then
fillDDL()
End if
End sub
Private Sub fillDDL()
fyll ddl:en med värden
End sub
</code>
Så går den ändå in i subben där ddl:en fylls.
Kanske skall nämna att jag har en aspx sida (index) som håller userkontrollerna. Så vid back klick anropas index.aspx samt vilken userkontroll som skall visas.Sv: Behålla värdet
Sv:Behålla värdet
1. I userkontroller finns tre Dropdowns. [År], [T.o.m Månad] och [F.r.o.m Månad]
- I page load har jag en kontroll i fall postback görs. Om det inte är postback ropas subben bindYear som fyller ddl:en year med värden (2005 etc etc). I bindyear ropas det även på bindTomMonth och bindFromMonth som fyller respektive ddl med "månadsvärden". Sen visas sidan med värden i alla tre ddl:er. (Enable Postback är satt till true för alla tre ddl:er.)
2. Default så visas 2005 i år ddl:en, Januari i t.om och f.r.o.m ddl:erna. Om jag nu väljer tex 2006 från year ddl:en eller någon annan månad i de andra så görs postback men den går inte in i bindningssubbarna (vilket är rätt) eftersom jag har kontrollen i pageload (If not isPostback).
3. Jag klickar på en submitknapp som tar mig till en annan sida där jag tar emot värdena och visar data. Om jag nu klickar på Explorerns tillbakaknapp eller på den Linkbutton som jag har på den sidan så tas jag tillbaka till sidan med ddl:erna. Nu har det ju gjorts en postback, men vid kontrollen "If Not IsPostback then" så går den ändå in där (och kör bindningssubbarna) trotts att det är en postback.
5. Vad jag vill åstadkomma är att om jag väljer 2006 i year ddl:en, januari i fromMonth ddl:en och september i tomMonth ddl:en, går till en ny sida och sedan går tillbaka så skall dessa värden vara valda fortfarande. Inte defaultvärdena (de som visas på första position i ddl:erna första gången).
Hoppas att jag beskrev det nog tydligt. Om ni har funderingar så svarar jag gärna.
MVH / ErikSv: Behålla värdet
Btw; ligger sidan i någon form av frame?Sv:Behålla värdet
index.aspx
________________________________________________________________________________
menu.ascx main.ascx
Kan det vara detta som spökar vid postbacks?
När jag gör tex en response.redirect så skriver jag följande:
<code>
Response.Redirect(index.aspx?left=menu&page=viewdetails)
Och det är på viewdetails.ascx jag har alla ddl:er och gör kontrollen mot postback.Sv: Behålla värdet
Sv:Behålla värdet
Sv: Behålla värdet
Det är skrämmande vad många som tror att asp.net är magiskt. Asp.net kan inte generera annat änhtml/xhtml-kod.
När du klickar på en linkbutton som sedan gör en response.redirect så kommer följande ske:
1) klient: klickar på länken
2) klient: länken anropar ett postback-javascript
3) klient: några hiddenfält får ett värde, en postback til servern görs
4) server: asp.net läser av hiddenfälten, bestämmer vilken kontroll som ska anropas
5) server: kontrollen kör sitt event
6) servr: koden kör response.redirect
7) response.redirect kommer att rendera en header enligt följande:
302 Object Moved
Location: http://din.server.se/din/sida.aspx
8) klient: Läser av att headern är utav typen 302
9) klient: Använder location-headern för att veta vilken sida den vill titta på istället
10) klient: utför ett GET-anrop mot den nya adressen
11) server: Svara på anropet som om det inte vore en postback eftersom att det inte är en postback. Förra förfrågan var en postback, inte denna...
PS.
Ursäktar ev. stavfel, agenten har fått fnatt och laddas om och om igen. Lite bokstäver försvinner här ch där ibland
DS.