我有一个包含数千条记录的网站,每次我做出一个动作时,gridview都会通过ajax发送大约300kb的内容。 我尝试制作一个自定义分页维护ajax功能,排序,但它是如此复杂。 我搜索了一个黑客,但我找不到任何东西。
链接: http://www.nikhedonia.com/notebook/entry/efficient-paging-for-gridview/ http://kpumuk.info/asp-net/gridview-with-custom-digg-like-pager/
@mellamokb,这是我对gridview进行数据绑定的方式
CODE:
Dim res = From r In dc.Reservas _
From u In dc.UsuariosData Where r.usr_Id = u.usr_Id _
From c In dc.Campings Where c.camp_Id = r.camp_Id And r.sta_Id <> 2 _
From rec In dc.OrdenesRegistros Where rec.rec_Id = r.rec_Id _
From o In dc.Ordenes Where o.ord_Id = rec.ord_Id _
From p In dc.Pagos Where p.pay_Id = o.pay_Id _
From z In dc.Zonas Where z.zon_Id = r.zon_Id _
Select New With {.res_Id = r.res_Id, _
.usr_NickName = u.usr_NickName, .usr_Name = u.usr_Name, _
.usr_LastName = u.usr_LastName, .usr_Email = u.usr_Email, _
.usr_Cel = u.usr_Cel, .camp_Name = c.camp_Name, _
.res_CreationDate = r.res_CreationDate, _
.pay_Name = p.pay_Name, _
.sta_Id = r.sta_Id, .camp_Id = c.camp_Id, .res_StartDate = r.res_StartDate, _
.res_EndDate = r.res_EndDate, .zon_Id = z.zon_Id}
Session("datosGridView") = res
GridView_ZC.DataSource = Session("datosGridView")
GridView_ZC.DataBind()
答案 0 :(得分:0)
分页应由数据源控件处理。如果您使用LinqDataSource
控件,那么它应该使用AutoPage="true"
AFAIK进行分页。
修改强>
您的数据源没有分页,因此在GridView对其进行分页之前,所有数据都必须流向GridView。您的LINQ-to-SQL查询将返回所有记录。
您希望使用“智能”数据源,例如LinqDataSource
控件。最简单的方法是声明LinqDataSource
,将GridView绑定到标记中的数据源,然后覆盖Selecting
的{{1}}事件以指定自定义数据检索逻辑: / p>
LinqDataSource
代码隐藏:
<asp:LinqDataSource ID="MyDataSource" runat="server"
OnSelecting="MyDataSource_Selecting" AutoPage="true" AutoSort="true">
</asp:LinqDataSource>
<asp:GridView ID="MyGridView" DataSourceID="MyDataSource" ... >
答案 1 :(得分:0)
检查一下:http://www.seila.gov.kh/eang/ASPNET2.0/Web_2.0_With_ASP_NET_3.5.pdf 有几个关于优化和性能的章节,我回忆一下有关gridview控件的一些内容。