我想在 APS.NET MVC 中使用带有过滤器选项的 Kendo UI 网格。
在我的示例中,我使用数据库作为数据源和学生表
当我使用学生类作为
public ActionResult Index()
{
var std = (from p in db.Students
select p).ToList();
return View("Student", std);
}
一切都好。
但是当我想使用 ViewModel 作为数据源时,在运行时当我点击过滤器图标过滤器窗口打开但我在过滤器的下拉列表中看不到任何内容。
我使用自动映射器和值注入器。
有什么建议可以解决这个问题吗?
附加
个人控制器.cs
public class PersonController : Controller
{
Adventureworks2012DataContext db = new Adventureworks2012DataContext();
public ActionResult Index()
{
/*var prs = (from p in db.Person
select p).ToList();*/
return View(GetPersonViewModel());
}
public ActionResult PersonViewModel_Read([DataSourceRequest]DataSourceRequest request)
{
return Json(GetPersonViewModel().ToDataSourceResult(request));
}
private IList<PersonViewModel> GetPersonViewModel()
{
return db.Person.Project().To<PersonViewModel>().ToList();
}
}
索引.cshtml
@model IList<DevartLinqTestMVC.ViewModel.PersonViewModel>
@{
ViewBag.Title = "Person List";}
<br />
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.Businessentityid);
columns.Bound(p => p.Persontype);
columns.Bound(p => p.Namestyle);
columns.Bound(p => p.Title);
columns.Bound(p => p.Firstname);
columns.Bound(p => p.Middlename);
columns.Bound(p => p.Lastname);
columns.Bound(p => p.Emailpromotion);
})
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Selectable()
.DataSource(dataSource => dataSource
.Ajax()
.Model(m => m.Id(s => s.Businessentityid))
.PageSize(20)
.Read(read => read.Action("PersonViewModel_Read", "Person")))
)