webForumDet fria alternativet

Behålla information vid uppdatering av sidan

.NET

6 svar · 262 visningar · startad av M477145

Medlem sedan sep. 200145 inlägg
Frågan#1

Hej. Jag har en sökfunktion. Om man söker får man fram en lista på söksvar. Nu vill jag att sidan ska behålla informationen om man uppdaterar den. Är det möjligt. Man ska nämligen kunna klicka på "sök-fliken" och få fram formuläret, men också kunna klicka på "resultat-fliken" och kunna se resultaten från föregående sökning. Både formuläret och resultatet ligger på samma sida. Några tips?

Medlem sedan juli 20011 304 inlägg
#2

Hur lagras söksvaren?

Du kan alltid cache:a dom!

Medlem sedan juni 20011 732 inlägg
#3

Om du lägger svaren i exempelvis en datagrid, så kommer den att behålla sina data över postbacks automatiskt.

Medlem sedan maj 20012 812 inlägg
#4

Om du lägger svaren i exempelvis en datagrid, så kommer den att behålla sina data över postbacks automatiskt.

Litet förtydligande bara, det fungerar så default, men om du har satt ViewState = False så kommer datagriden inte hålla informationen.

Man skall använda ViewStaten väldigt restrektivt eftersom den skickar med data till klienten och sedan tillbaka till servern, vilket gör att om du har en datagrid som innehåller massor med data så kommer det skickas fram och tillbaka på nätverket och ta bandbred.

- M

Medlem sedan juni 20011 732 inlägg
#5

Man skall använda ViewStaten väldigt restrektivt eftersom den skickar med data till klienten och sedan tillbaka till servern, vilket gör att om du har en datagrid som innehåller massor med data så kommer det skickas fram och tillbaka på nätverket och ta bandbred.

Japp, fördelarna är å andra sidan att du slipper använda alternativa metoder, exempelvis sessioner som fyller din servers minne istället. Med viewstate kan du dessutom alltid vara säker på att informationen finns kvar så länge användaren är kvar...

Men som sagt, den kan bli stor, jag har haft en viewstate på flera 100kb och då bör man nog fundera på alternativa lösningar. Vill man vara seriös så är det alltid läge att gå igenom vilka kontroller som behöver viewstate, här finns prestanda att spara. Men om dina svar inte innehåller enormt mycket data så tycker jag att en datagrid med viewstate är det alternativ du bör använda.

Medlem sedan sep. 200145 inlägg
#6

Yeah ... you lost me there mr ...

Medlem sedan juni 20011 732 inlägg
#7

Gör så här. Du har två sökningar som du vill spara om jag förstått dig rätt, den senaste och den näst senaste. Lägg båda sökresultaten i ett dataset. Om inte sökresultatet är väldigt stort så är ett förslag att du sedan lägger ditt dataset i viewstaten (du bakar alltså in båda sökningarna på klientens sida så slipper du hålla en massa sökningar i minnet). Då har du sedan alltid tillgång till båda uppsättningarna data och du kan plocka fram dem med exempelvis en datagrid. Så länge du inte skriver över din viewstate så finns den kvar oavsett hur många gånger du postar sidan fram och tillbaka till servern!

Det är inte svårt att skriva till viewstate, fungerar på samma sätt som när du skriver till en session:

//spara datasetet med sökresultaten i viewstaten:
ViewState["SearchResult"] = dataset;
Sen kan du använda viewstaten som vilket dataset som helst:
((DataSet)ViewState["SearchResult"]).Tables["Table1"] //osv...

Om du undrar vad viewstate egentligen är för något, kolla koden på en exekverad aspx-sida så ser du att det finns ett gömt formulär:

<input type="hidden" name="__VIEWSTATE" ...

...som innehåller en massa gojja., Detta är helt enkelt all data sparad på klienten som innehåller data om dina kontroller och liknande, exempelvis är det därför en textbox kan komma ihåg alla sina inställningar även om du postar tillbaka sidan till servern. Det är här du även kan spara egen data. När sidan skickas tillbaka till servern så tar den emot viewstaten och du kan programmera mot den på samma sätt som en vanlig session.

252 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)