【问题标题】:NHibernate paging for Telerik Extensions for ASP.NET MVCTelerik Extensions for ASP.NET MVC 的 NHibernate 分页
【发布时间】:2011-01-29 15:57:46
【问题描述】:

如何以最少的编码将用于 ASP.NET MVC (http://demos.telerik.com/aspnet-mvc/Grid) 的 Telerik Grid 分页与我的 NHibernate 数据访问集成?

【问题讨论】:

    标签: asp.net-mvc nhibernate pagination telerik


    【解决方案1】:

    我真的不知道您的最少编码标准是什么,但在 Telerik 网站上,您提供了一个非常冗长的示例:

    public partial class GridController : Controller
    {
        public ActionResult FirstLook(bool? ajax, bool? scrolling, bool? paging, bool? filtering, bool? sorting, bool? grouping, bool? showFooter)
        {
            ViewData["ajax"] = ajax ?? true;
            ViewData["scrolling"] = scrolling ?? true;
            ViewData["paging"] = paging ?? true;
            ViewData["filtering"] = filtering ?? true;
            ViewData["grouping"] = grouping ?? true;
            ViewData["sorting"] = sorting ?? true;
            ViewData["showFooter"] = showFooter ?? true;
    
            return View(GetOrderDto());
        }
    
        [GridAction]
        public ActionResult _FirstLook()
        {
            return View(new GridModel(GetOrderDto()));
        }
    }
    

    所以您需要做的就是实现这个GetOrderDto 方法(顺便说一下,它应该放在某个存储库中,而不是控制器逻辑的一部分),您可以在其中使用现有的 NHibernate 数据访问。

    【讨论】:

    • 你解释的都是我已经做过的。但是,GetOrderDto() 从数据库中读取所有订单并返回 IEnumerable,Telerik Grid 将使用它来呈现正确的页面。我只想使用 NHibernate 数据访问从数据库中检索所需的页面。
    • 当您单击页码时,网格会将此页码发布到控制器操作。获得当前页面和希望每页显示的行数后,您可以在 NHibernate 查询中使用 SetFirstResultSetMaxResult 对结果集进行分页 (stackoverflow.com/questions/54754/…)。
    【解决方案2】:

    尝试将 IQueryable 对象(Linq 到 NHibernate)传递给 Telerik Grid,在这种情况下,它将自动进行分页/排序(无需编码)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多