使用Linq查询作为数据源的ASP.NET GridView分页

当我在运行时使用linq查询设置数据源时,我正在寻找一种使用GridView进行分页的方法。 这是我的代码:

ETDataContext etdc = new ETDataContext(); var accts = from a in etdc.ACCOUNTs orderby a.account_id select new { Account = a.account_id, aType = a.SERVICEs.FirstOrDefault().SERVICE_TYPE.service_type_desc, name = a.SERVICEs.FirstOrDefault().service_name, Letter_dt = a.create_dt, PrimAccthldr = a.PEOPLE.first_name + " " + a.PEOPLE.middle_name + " " + a.PEOPLE.last_name }; GridView1.DataSource = accts; GridView1.BindData(); 

我有网格设置允许分页,但我收到一个错误,指出尚未处理PageIndexChanging事件。 我四处搜索,发现了以下内容:

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; GridView1.DataBind(); } 

但是当你使用数据表而不是linq时,这种方法很有效。 如果我在事件中添加重新绑定,它必须重新查询7000条记录,这些记录可能有点慢。 有没有人知道如何使用像这样的linq修复分页?

可能的解决方案:

http://www.devtoolshed.com/content/gridview-objectdatasource-linq-paging-and-sorting

http://www.dbtutorials.com/display/linq-to-sql-paging-cs.aspx

其他可能性:

使用Scott Guthrie(ASP之父)所描述的LINQ数据源http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using -the-ASP-的LinqDataSource-control.aspx