Gridview过滤器和使用LINQ排序

问题描述:

我正在将项目升级到.net 4.我的GridViews使用数据集并使用ObjectDataSource实现过滤,排序和分页。Gridview过滤器和使用LINQ排序

将GridView连接到Linq查询并实现排序,过滤和分页的最佳实践是什么?

我仍然使用DataSet和ObjectDataSource,或者有没有办法使用另一种类型的DataSource让我直接连接到处理过滤,排序和分页的LINQ查询结果?

编辑:

有一个在UI和DatabaseContext之间busineseslogic因此直接连接到我的ORM是不是一种选择。它必须针对LINQ查询结果(IQueryable)。在与ORM交谈之前,我正在使用单独的插入/更新/删除功能来处理业务逻辑。

你可以做的是保持你的ObjectDataSource(ODS),但采用你用来检索数据的逻辑,并将它放入一个使用Linq(或任何其他数据访问技术)为你检索数据的类。

要在ObjectDataSource中执行此操作,请指定将为您完成工作的类的名称,例如

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
          TypeName="CustomDAL" 
          SelectMethod="GetData"/> 

这将使得ODS创建CustomDAL类的一个实例,并调用GetData方法。

还支持排序和分页,但它可能最好是自己实现与限制检索的数据有关的实际逻辑。

要启用分页添加EnablePaging="True"到ODS宣言和您的SelectMethod您添加使用SkipTake方法,让您如正确记录StartRowIndex和每页处理它们在你的LINQ

var results= (from user in context.users 
      where user.UserId == userId 
      select user).Skip(StartRowIndex).Take(PageSize).ToList() 
+0

非常感谢但没有(创建)每个objectdatasource的函数。而只是将类型和所需的参数或linq查询传递给1个泛型类。 – Jeroen 2011-07-31 00:17:49

+0

您可能最好创建自己的通用数据访问类,而不是使用ODS并通过手动数据绑定填充网格视图 – Nathan 2011-08-03 21:27:50