我正在尝试让telerik网格工作(分页工作正常(。我的视图代码如下:
@(Html.Telerik().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
columns.Bound(o => o.ItemName.Text).Title("Name");
})
.Pageable(pager => pager.PageSize(20))
.Sortable()
)
我的控制器看起来像这样:
public ActionResult Index(GridCommand command)
{
return View(BlaRepository.GetBlas(command.PageSize, command.Page));
}
存储库如下所示:
public IQueryable<Bla> GetBlas(int PageSize, int Page)
{
var query = (from e in Session.Query<Bla>() select e).AsQueryable();
return query.Skip((Page - 1) * PageSize).Take(PageSize);
}
我知道GridCommand将包含要排序的内容:
command.SortDescriptors
我必须以某种方式将其与存储库结合起来(或者我在哪里读到,如果我使用IQueryable,telerik引擎会处理这个问题(。
不幸的是,在控制器被击中之前,我遇到了一个异常:
不支持指定的方法。
第8行:@(Html.Telerik((.网格(模型(
如果有帮助的话,我可以发布stacktrace。。。
不管怎样,有人使用NHibernate、IQueryable和ASP.NET MVC(我实际上使用的是sharp架构2.0 RC(实现了这一点。
谢谢!
Christian
我昨天刚刚做了这个。Telerik制作了一个非常有用的代码示例:http://www.telerik.com/community/code-library/aspnet-mvc/grid/nhibernate-binding.aspx
需要指出的几点:
- 你需要使用Nhibernate 3.x,否则过滤将无法工作
- 你不需要有寻呼代码,telerik gridcommand包含这些信息并将其插入IQueryable中
- 这只适用于客户端ajax绑定,看起来应该是这样的:
.DataBinding(dataBinding => dataBinding.Ajax().Select("index", "mycontroller"))
- 当您使用ajax绑定时,您不需要将模型传递到网格,而是指定模型的类型,如下所示:
.Grid<ItemRowViewModel>()
在一个有40万行的网格中,它对我来说效果非常好。如果你在设置它时遇到任何问题,请告诉我。