[問題] asp.net + linq to sql

作者: areyo (沒有名字的怪物)   2017-07-14 20:58:28
各位晚安
請教個問題,我的環境是asp.net c# + MSSQL
透過linq to sql讀取資料庫資料,用gridview去顯示
但是當資料筆數很大時(約10萬筆),要載入頁面時就很慢
有沒有什麼辦法可以改善呢??? 是得要用ajax嗎?
我是都這樣讀取資料的
var res = from t in myDB.commandrecords
orderby t.item_no descending
select t;
GridView1.DataSource = res;
GridView1.DataBind();
謝謝
作者: J002 (阿里山 我來了XD~)   2017-07-14 21:09:00
gridview有做分頁嗎?另外 撈10萬筆出來全部長到網頁上當然會慢QQ
作者: areyo (沒有名字的怪物)   2017-07-14 22:16:00
有,那怎麼做到"點下一頁,再載入呢"?
作者: J002 (阿里山 我來了XD~)   2017-07-14 23:03:00
myDB.commandrecords.Skip(pageIndex * pageCount).Select(p=> p);啊,.Skip前面要加入.OrderByDescending(p => p.item_no)阿,抱歉 剛剛想到.Select應該要改成.Take(pageCount)就好這樣就變成每次只取特定範圍的筆數了
作者: qa17b (聖猿降臨 眾酸退散)   2017-07-15 02:15:00
10萬筆光DB就要跑多久了 更何況是程式
作者: kevintsengtw (mrkt)   2017-07-15 06:58:00
查怎麼用 Skip 與 Take 做資料分頁
作者: areyo (沒有名字的怪物)   2017-07-15 12:01:00
所以不要依賴系統預設的
作者: J002 (阿里山 我來了XD~)   2017-07-15 12:17:00
如果是直接用gridview吃Linq(/EF)DataSource控制項,印象中會搭配GridView做分頁,但若是自己寫的話就得一切手動了0rz
作者: ian90911 (xopowo)   2017-07-15 16:37:00
印象gridview分頁只是分你餵給他的source內的資料我通常是餵給他10筆實際資料 告訴他分頁器有100頁在點分頁器第2頁時再去撈11~20筆實際資料
作者: J002 (阿里山 我來了XD~)   2017-07-16 00:36:00
印象中,用gridview接datasource控制項的話他會自己去撈指定範圍內的資料,並同時計算頁數那些。但若是自己來的話,就要自己處理,但您的寫法就是會撈了全部資料後再讓gridview分頁當然會比較慢一些@@"ian90911大說的方法就是手動的話,需要做的事情。
作者: areyo (沒有名字的怪物)   2017-07-16 08:22:00
謝謝兩位

Links booklink

Contact Us: admin [ a t ] ucptt.com