APS.NET MVC でフィルタ オプション付きの Kendo UI グリッドを使用したいと考えています。
私の例では、データベースをデータソースとして使用し、学生テーブルを使用します
学生クラスを
public ActionResult Index()
{
var std = (from p in db.Students
select p).ToList();
return View("Student", std);
}
全て大丈夫。
しかし、ViewModel をデータソースとして使用したい場合、実行時にフィルター アイコンをクリックするとフィルター ウィンドウが開きますが、フィルターのドロップダウン リストに何も表示されません。
オートマッパーとバリューインジェクターを使用しています。
この問題を解決するための提案はありますか?
添付
PersonController.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")))
)