我正在寻找一种方法来使用linq查询在运行时设置数据源时使用GridView进行分页。这里是我的代码:使用Linq查询作为数据源的ASP.NET 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这样的分页问题?
描述的源不要使用DAL或objectdatasource对象是。只需简单地用linq创建一个匿名类型,然后直接绑定到网格。 – ecspot 2010-08-27 02:48:11
如果想按照这种方式,你会有糟糕的表现。这不是这样做的正确方式......您应该使用LINQ数据源,例如,为您提供高效分页支持。 – 2010-08-27 02:57:11
我无法使用linqdatasource链接多个表,否则我只会绑定到那个。你知道一种使用linqdatasource来做这个查询的方法吗?数据来自4个不同的表格。 – ecspot 2010-08-27 03:01:53