C# 使用ViewModels时的TelerikMVC扩展网格过滤器
我正试图找出最简单的方法来过滤我的网格C# 使用ViewModels时的TelerikMVC扩展网格过滤器,c#,lambda,telerik-grid,telerik-mvc,C#,Lambda,Telerik Grid,Telerik Mvc,我正试图找出最简单的方法来过滤我的网格 @Html.Telerik().Grid<MyViewModel>() .Name("Grid") .Filterable(); @Html.Telerik().Grid() .名称(“网格”) .Filterable(); 我在视图中使用ViewModels,在控制器中使用DomainModels。我使用AutoMapper在它们之间绘制地图。 问题是Telerik网格设计不适用于ViewModels,因此过滤器逻辑会
@Html.Telerik().Grid<MyViewModel>()
.Name("Grid")
.Filterable();
@Html.Telerik().Grid()
.名称(“网格”)
.Filterable();
我在视图中使用ViewModels,在控制器中使用DomainModels。我使用AutoMapper在它们之间绘制地图。
问题是Telerik网格设计不适用于ViewModels,因此过滤器逻辑会出错:(
[GridAction(EnableCustomBinding=true)]
公共JsonResult SelectHandled(GridCommand命令)
{
var items=\u repository.asqueryable()
.Where(command.FilterDescriptors)/您可以从控制器返回所有记录,Telerik grid可以自行管理过滤逻辑。从代码中,您可以像这样尝试:
[GridAction(EnableCustomBinding = true)]
public ActionResult SelectHandled(GridCommand command)
{
IEnumerable<MyViewModel> items = _repository.Get();
var vms = Mapper.Map<IEnumerable<MyModel>, IEnumerable<MyViewModel>>(items);
var retColl = new GridModel(vms) { Total = command.PageSize * command.Page };
return View(retColl);
}
[GridAction(EnableCustomBinding=true)]
公共操作结果SelectHandled(GridCommand命令)
{
IEnumerable items=_repository.Get();
var vms=Mapper.Map(项目);
var retColl=newgridmodel(vms){Total=command.PageSize*command.Page};
返回视图(retColl);
}
这只会进行客户端过滤。因此,要使其起作用,我必须将整个列表发送给客户端,但该列表不起作用。如果要从数据库中获取所有记录,然后尝试使用.Where(command.FilterDescriptors)手动应用过滤
那么我认为性能不会有太大的提高。因此我仍然希望返回所有记录,让网格自己处理过滤逻辑,以避免复杂性。\u repository.Get()
应该是\u repository.asqueryable()
。更正了帖子。因此它在数据库上被过滤。
[GridAction(EnableCustomBinding = true)]
public ActionResult SelectHandled(GridCommand command)
{
IEnumerable<MyViewModel> items = _repository.Get();
var vms = Mapper.Map<IEnumerable<MyModel>, IEnumerable<MyViewModel>>(items);
var retColl = new GridModel(vms) { Total = command.PageSize * command.Page };
return View(retColl);
}