【问题标题】:NHibernate paging and Binding to GridviewNHibernate 分页和绑定到 Gridview
【发布时间】:2009-03-20 16:09:57
【问题描述】:

我有一个绑定到 IList 的 Gridview。 我想要分页“更安全的方式”(只获取我需要的项目),所以我在我的存储库上创建了一个这样的方法

public Ilist<Item> GetItems(int from, int number){ ... }

问题是当我绑定它时,它只显示 n 个项目,而不显示分页控件。我试图找到一种方法来告诉 gridview 我的结果集中有多少元素

public int CountItems{ get{ ... } }

但我没有找到告诉 GV 这个值的地方。

这里的策略是什么?有必要有一个ObjectDS吗?我拒绝这么相信!

我可以做些什么来进行分页?

【问题讨论】:

    标签: asp.net nhibernate gridview


    【解决方案1】:

    NHibernate 有一个将 IQueryable 转换为 DataTable 的本地类 您需要创建一个 ObjectDataSource 并从 Nhybernate 中的 DAO 提供它。 ObjectDataSource 需要一个 DataTable 来进行分页、过滤、编辑。

    【讨论】:

      【解决方案2】:

      不幸的是,您确实需要一个对象数据源或实现一个自定义数据源。这是提到它的 msdn 文档的链接http://msdn.microsoft.com/en-us/library/5aw1xfh3.aspx。 Datagrid 确实支持做你想做的事,但 ms 没有为 GridView 做同样的事情。

      我想一个选项是创建某种虚拟的自定义数据源,它会公开您仍然需要控制它之外的过程的方法/事件。

      【讨论】:

        【解决方案3】:

        implementing paging in an ASP.NET gridview using NHibernate. 时我也遇到了同样的问题,如果您实现自己的分页功能,这是 GridView 的一个令人沮丧的限制。

        当时我看到的只有三个选项:

        1. 创建实现自定义的单独用户控件 与 GridView 控件交互的导航功能
        2. 创建一个继承自 GridView 控件的派生类和 添加自定义导航功能
        3. 使用 ObjectDataSource

        我选择了 #1 的基本实现,因为它比 #2 更简单,并且比使用 #3 更可取,因为它与我们在项目中使用的模型-视图-演示者模式不匹配(以及使单元测试更加困难)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-19
          • 2014-07-13
          • 1970-01-01
          • 2011-01-24
          • 2010-12-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多