使用LINQ进行Gridview过滤和排序

时间:2010-09-21 14:12:25

标签: linq gridview .net-4.0

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

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

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

修改

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

1 个答案:

答案 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,使用SkipTake方法在linq中处理它们记录例如

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