Read doesn't work :(
Here's the view:
@*@(Html.Kendo().Grid(Model.Forms)*@ - this one works, unlike the other two which are used with
@*@(Html.Kendo().Grid<CTR.Models.Forms.Form>()*@
@(Html.Kendo().Grid<CTR.Models.FormsViewModels.FormViewModel>()
.Name("Forms")
.Columns(columns =>
{
columns.Bound(p => p.ID);
columns.Bound(p => p.Type);
})
.DataSource(datasource => datasource
.Ajax()
.Read(read => read.Action("List1", "Forms"))
)
)
this works
public ActionResult Index()
{
var forms = _context.Forms.ToList();
var model = new ListViewModel(forms);
return View(model);
}
None of the Read actions work, i.e. the grid receives zero items.
The actions do return data:
{"data":[{"id":3,"type":0,"questions":null},{"id":2,"type":0,"questions":null},{"id":1,"type":0,"questions":null}],"total":3,"aggregateResults":null,"errors":null}
public async Task<IActionResult> List([DataSourceRequest] DataSourceRequest request)
{
var forms = await _context.Forms.ToListAsync<Form>();
var list = new List<FormViewModel>();
forms.ForEach(x => list.Add(new FormViewModel(x)));
DataSourceResult result = await list.ToDataSourceResultAsync(request);
return Json(result);
}
public ActionResult List1([DataSourceRequest] DataSourceRequest request)
{
var forms = _context.Forms.ToList<Form>();
var list = new List<FormViewModel>();
forms.ForEach(x => list.Add(new FormViewModel(x)));
DataSourceResult result = list.ToDataSourceResult(request);
return Json(result);
}
public async Task<ActionResult> List2([DataSourceRequest] DataSourceRequest request)
{
IQueryable<Form> forms = _context.Forms;
DataSourceResult result = await forms.ToDataSourceResultAsync(request);
return Json(result);
}
Here's the view:
@*@(Html.Kendo().Grid(Model.Forms)*@ - this one works, unlike the other two which are used with
@*@(Html.Kendo().Grid<CTR.Models.Forms.Form>()*@
@(Html.Kendo().Grid<CTR.Models.FormsViewModels.FormViewModel>()
.Name("Forms")
.Columns(columns =>
{
columns.Bound(p => p.ID);
columns.Bound(p => p.Type);
})
.DataSource(datasource => datasource
.Ajax()
.Read(read => read.Action("List1", "Forms"))
)
)
this works
public ActionResult Index()
{
var forms = _context.Forms.ToList();
var model = new ListViewModel(forms);
return View(model);
}
None of the Read actions work, i.e. the grid receives zero items.
The actions do return data:
{"data":[{"id":3,"type":0,"questions":null},{"id":2,"type":0,"questions":null},{"id":1,"type":0,"questions":null}],"total":3,"aggregateResults":null,"errors":null}
public async Task<IActionResult> List([DataSourceRequest] DataSourceRequest request)
{
var forms = await _context.Forms.ToListAsync<Form>();
var list = new List<FormViewModel>();
forms.ForEach(x => list.Add(new FormViewModel(x)));
DataSourceResult result = await list.ToDataSourceResultAsync(request);
return Json(result);
}
public ActionResult List1([DataSourceRequest] DataSourceRequest request)
{
var forms = _context.Forms.ToList<Form>();
var list = new List<FormViewModel>();
forms.ForEach(x => list.Add(new FormViewModel(x)));
DataSourceResult result = list.ToDataSourceResult(request);
return Json(result);
}
public async Task<ActionResult> List2([DataSourceRequest] DataSourceRequest request)
{
IQueryable<Form> forms = _context.Forms;
DataSourceResult result = await forms.ToDataSourceResultAsync(request);
return Json(result);
}
Just FYI - I've read http://docs.telerik.com/aspnet-mvc/helpers/grid/binding/ajax-binding