<b>Jag vill utfärda en allmän varning för ViewState i ASP.NET. :-)</b> Innan du gör en så drastisk åtgärd som att utföra en allmän varning kanske du skall förklara vad viewstate är, vad det kan användas till etc. Då kanske "newbies" lättare kan avgöra om den skall vara på eller av. Det finns faktisk en hel del fördelar med viewstate. Enl mig faktiskt en av de bättre förändringarna gentimot klassisk ASP. Som vanligt när man sysslar med nåt är det kunna det man gör. Tyvärr så är det ju ofta så att inom utveckling så är det inte lika stora krav på kunskap som det är inom många andra brancher. <b>Innan du gör en så drastisk åtgärd som att utföra en allmän varning kanske du skall förklara vad viewstate är,</b> <b>Nej varför det? Båda är server controls som skapar HTML kod. Jag kan aldrig tänka mig att det skulle bli märkbart snabbare med en Repeater. "...the Repeater does boast the best performance of the three data Web controls. Its performance is comparable to the DataList's, but noticeably better than the DataGrid's." Ja det blev kanske lite off topic där för det som Ola skriver om viewstate är ju helt rätt, den bör stängas av i de fall det inte fyller nån funktion för sidan eller kontrollen... Ger som Ola beskriver ordentliga prestandaförbättringar... Det jag ville peka på var bara att man även bör fundera igenom vilka serverkontroller man använder sig av på en sida och i vilket syfte, vilket beskrivs i artikeln jag hänvisar till... Varning för ViewState
Använd med försiktighet!
Det kommer väl inte som en nyhet för alla precis men jag tror att många newbies gör misstaget att glömma <b>slå av DataGrid.EnableViewState</b> (default = True!)
Håller på med en ny grej som ska importera data från xls till sql i asp.net och använde datagrid för att "previewa" en Datatable.. Funkar så att jag med en OleDbReader läser från Excelfil och stoppar in värde i en DataTable, som binds till en Grid. Det gick skitsnabbt tills jag blandade in Datagridden ;)
<b>Testresultat.</b>
Datagrid med ~20 kolumner och 450 rader.
Ungefärlig tid att ladda sidan <b>med Viewstate: 11 sek.</b>
Ungefärlig tid att ladda sidan <b>UTAN Viewstate: 2 sek.</b>
Alltså jag visste ju att Viewstate drog ner prestandan avsevärt,
men ~10 ggr långsammare trodde jag inte.Sv: Varning för ViewState
Sen så är det ju viktigt att välja rätt kontroll för endamålet. Att "prewiewa" med en datagrid låter lite overkill. Kanske skulle en repeater vara lämpligare? Väljer man en datagrid är det nog i de flesta fall för att man vill ha editeringsmöjligheter etc och det är då viewstate kommer till sin rätt.Sv: Varning för ViewState
Men självklart har du rätt. Det är väldigt viktigt att vara medveten om ViewState, vad det gör och hur man bäst använder eller inte använder det. Man får mycket grymma features med hjälp av det. Men det kan ju som du själv skriver oxå slöa ner och försämra en applikation. Det är hela tiden en balansgång mellan bandbredd, clientens fart på sin PC, serverns kraft, vad man vill ge för upplevelse osv osv.Sv:Varning för ViewState
Njae, det finns många sidor på nätet som fördjupar sig i det. Och jag tror nog att de flesta som jobbat något i ASP.NET har fått lite grepp om Viewstate. Annars är det ju bara att fråga!
<b>Det finns faktisk en hel del fördelar med viewstate. Enl mig faktiskt en av de bättre förändringarna gentimot klassisk ASP.</b>
Jag instämmer. Jag menade inte att "dissa" Viewstate allmänt. I en vanligt formulär med upp till 50 server controls t.ex. så är det mycket smidigt och då bör man dra nytta av det.
Men i det specifika fallet med en stor datagrid kan det vara katastrofalt. Det var detta jag vill upplysa om.
<b>Sen så är det ju viktigt att välja rätt kontroll för endamålet. Att "prewiewa" med en datagrid låter lite overkill. Kanske skulle en repeater vara lämpligare? </b>
Nej varför det? Båda är server controls som skapar HTML kod. Jag kan aldrig tänka mig att det skulle bli märkbart snabbare med en Repeater.
Att en Datagrid är en något mer omfattande .Net-klass tror jag är försumbart i sammanhanget. (när flera hundra kb Viewstate string skapas och transporteras till klienten...)Sv: Varning för ViewState
Att en Datagrid är en något mer omfattande .Net-klass tror jag är försumbart i sammanhanget. (när flera hundra kb Viewstate string skapas och transporteras till klienten...)</b>
Ola L, skulle rekommendera dig att läsa igenom följande artikel på MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/aspnet-whenusedatawebcontrols.asp
"...the Repeater does boast the best performance of the three data Web controls. Its performance is comparable to the DataList's, but noticeably better than the DataGrid's."Sv:Varning för ViewState
Det Ola menar är ju att även om det tar dubbelt så långtid att generera htmlkontrollerna med en datagrid jämfört med en repeater, så är de extra ms rätt så försumbara i förhållande till de extra 9 sekunder det tar att ladda ner sidan med viewstaten på resp viewstaten av.
- MSv: Varning för ViewState