看板 C_Sharp 關於我們 聯絡資訊
各位晚安 請教個問題,我的環境是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(); 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.91.30 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1500037111.A.1DB.html
J002: gridview有做分頁嗎? 07/14 21:09
J002: 另外 撈10萬筆出來全部長到網頁上當然會慢QQ 07/14 21:09
areyo: 有,那怎麼做到"點下一頁,再載入呢"? 07/14 22:16
J002: myDB.commandrecords.Skip(pageIndex * pageCount).Select(p 07/14 23:03
J002: => p); 07/14 23:03
J002: 啊,.Skip前面要加入.OrderByDescending(p => p.item_no) 07/14 23:04
J002: 阿,抱歉 剛剛想到.Select應該要改成.Take(pageCount)就好 07/14 23:11
J002: 這樣就變成每次只取特定範圍的筆數了 07/14 23:11
qa17b: 10萬筆光DB就要跑多久了 更何況是程式 07/15 02:15
kevintsengtw: 查怎麼用 Skip 與 Take 做資料分頁 07/15 06:58
areyo: 所以不要依賴系統預設的 07/15 12:01
J002: 如果是直接用gridview吃Linq(/EF)DataSource控制項,印象中 07/15 12:17
J002: 會搭配GridView做分頁,但若是自己寫的話就得一切手動了0rz 07/15 12:17
J002大大,我原本的寫法就是利用gridview去做分頁。 那跟自己手動去處理分頁,有何差異呢? 手動效能會較好嗎?? ※ 編輯: areyo (1.174.247.226), 07/15/2017 16:31:02
ian90911: 印象gridview分頁只是分你餵給他的source內的資料 07/15 16:37
ian90911: 我通常是餵給他10筆實際資料 告訴他分頁器有100頁 07/15 16:37
ian90911: 在點分頁器第2頁時再去撈11~20筆實際資料 07/15 16:38
J002: 印象中,用gridview接datasource控制項的話他會自己去撈指定 07/16 00:36
J002: 範圍內的資料,並同時計算頁數那些。但若是自己來的話,就要 07/16 00:37
J002: 自己處理,但您的寫法就是會撈了全部資料後再讓gridview分頁 07/16 00:38
J002: 當然會比較慢一些@@" 07/16 00:38
J002: ian90911大說的方法就是手動的話,需要做的事情。 07/16 00:40
areyo: 謝謝兩位 07/16 08:22