我正在将项目升级到.net 4.我的GridViews正在使用DataSet并使用ObjectDataSource实现过滤,排序和分页。
将GridView连接到Linq查询并实现排序,过滤和分页的最佳做法是什么?
我仍然使用DataSet和ObjectDataSource,还是有办法使用另一种类型的DataSource让我直接连接到LINQ查询结果,该结果为我处理过滤,排序和分页?
修改
在UI和DatabaseContext之间存在busineses逻辑,因此不能直接连接到我的ORM。它必须与LINQ查询结果(IQueryable)相对。我在与ORM交谈之前使用单独的插入/更新/删除功能来处理业务逻辑。
答案 0 :(得分:1)
您可以做的是保留您的ObjectDataSource(ODS),但是使用您用来检索数据的逻辑并将其放入使用Linq(或任何其他数据访问技术)的类来为您检索数据。< / p>
要在ObjectDataSource中执行此操作,请指定将为您工作的类的名称,例如。
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
TypeName="CustomDAL"
SelectMethod="GetData"/>
这将使ODS创建CustomDAL
类的实例并调用GetData
方法。
也支持排序和分页,但最好自己实现与限制检索数据相关的实际逻辑。
要启用分页,请将EnablePaging="True"
添加到ODS声明中,并在SelectMethod上添加StartRowIndex和PageSize,使用Skip
和Take
方法在linq中处理它们记录例如
var results= (from user in context.users
where user.UserId == userId
select user).Skip(StartRowIndex).Take(PageSize).ToList()