[问题] 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