Asp.Net分页最佳实践

时间:2009-05-21 00:11:39

标签: asp.net pagination

我正在使用linq to sql来获取我的数据,当我在数据网格上设置页面大小并且用户选择第2页时,我得到回发并且我重新读取所有数据以显示第二页。我怀疑应该有更好的方法来做到这一点,这种方式最终只能读取我需要显示的数据。我想知道是否有任何代码示例...

3 个答案:

答案 0 :(得分:3)

您应该真正关注SkipTake方法。

请参阅ScottGu在LINQ to SQL (Part 3)上的帖子,并在页面中搜索“分页我们的查询结果” - 这有一些很好的例子。

或者,如果您使用LinqDataSource control,并且您正在与SQL 2005或2008数据库通信,则应自动获得此行为。 LINQ to SQL (Part 5)涵盖了这一点。

答案 1 :(得分:2)

如果您希望真的减轻数据库负载,请查看client-side paging ...

答案 2 :(得分:0)

public static IEnumerable<new_log> Search(dbDataContext db, int _user,int _pageNumber, int _rowCountPerPage)
{
var query = (
                   from p in db.new_log
                  where p.created_by == (_user < 0 ? p.created_by : _user)  orderby p.id descending
                  select p 
                  )

              .Skip(_pageNumber * _rowCountPerPage).Take(_rowCountPerPage); 
return query;

}

要点:

1.我们必须在页面或控制级别禁用视图状态以提高性能。

<%@ Page Language="C#" EnableViewState="false" %> OR <asp:GridView
   EnableViewState="false" runat="server"  />

2.尝试编写单个查询以获得结果。

http://forums.asp.net/p/1779601/5120205.aspx/1?p=True&t=634814907594742030

相关问题