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您添加使用Skip
和Take
方法,让您如正确记录StartRowIndex和每页处理它们在你的LINQ
var results= (from user in context.users
where user.UserId == userId
select user).Skip(StartRowIndex).Take(PageSize).ToList()
非常感谢但没有(创建)每个objectdatasource的函数。而只是将类型和所需的参数或linq查询传递给1个泛型类。 – Jeroen 2011-07-31 00:17:49
您可能最好创建自己的通用数据访问类,而不是使用ODS并通过手动数据绑定填充网格视图 – Nathan 2011-08-03 21:27:50