【问题标题】:Gridview filter and sorting using LINQ使用 LINQ 进行 Gridview 过滤和排序
【发布时间】:2010-09-21 14:12:25
【问题描述】:

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

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

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

编辑:

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

【问题讨论】:

    标签: linq gridview .net-4.0


    【解决方案1】:

    您可以做的是保留您的 ObjectDataSource (ODS),但将用于检索数据的逻辑放入使用 Linq(或任何其他数据访问技术)为您检索数据的类中。

    要在 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()
    

    【讨论】:

    • 谢谢,但最大的优势是没有(创建)每个对象数据源的函数。而只是将类型和所需参数或 linq 查询传递给 1 个泛型类。
    • 您最好创建自己的通用数据访问类,而不是使用 ODS 并通过手动数据绑定填充网格视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2013-08-16
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多