My application has an empty grid at the start of the application; however the user will be adding rows. I am migrating this application from ASP.NET Web Forms where I solved this situation by using Session variables.
Here is my grid:
<panel>
<h3>DETAIL</h3>
@(Html.Kendo().Grid<EDPortalCoreRider.Models.WebForm850Item>()
.Name("Grid")
.Columns(columns => {
columns.Bound(p => p.PO101);
columns.Bound(p => p.PO102).Width(140);
columns.Bound(p => p.PO103).Width(140);
columns.Bound(p => p.PO104).Width(100);
columns.Bound(p => p.PO105).Width(100);
columns.Bound(p => p.PO107).Width(100);
columns.Bound(p => p.PO109).Width(100);
columns.Bound(p => p.PO111).Width(100);
columns.Bound(p => p.PID05).Width(100);
columns.Bound(p => p.PO401).Width(100);
columns.Bound(p => p.PO414).Width(100);
columns.Command(command => command.Destroy()).Width(110);
})
.ToolBar(toolbar => {
toolbar.Create();
toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Navigatable()
.Sortable()
.Scrollable()
.DataSource(dataSource => dataSource
.Custom()
.Batch(true)
.PageSize(20)
.Transport(transport =>
{
transport.Read(read =>
read.Action("GetItems","WebForm")
);
transport.Create(create =>
create.Action("AddItems","WebForm").Type(HttpVerbs.Post)
);
transport.Update(update =>
update.Action("SaveItems","WebForm").Type(HttpVerbs.Post)
);/*
transport.Destroy(destroy =>
destroy.Url("https://demos.telerik.com/kendo-ui/service/products/destroy")
.DataType("jsonp")
);*/
transport.ParameterMap("parameterMap");
})
)
)
<script>
function parameterMap(options, operation) {
if (operation !== "read" && options.models) {
return { models: kendo.stringify(options.models) };
}
}
</script>
</panel>
Here is my Controller code:
[HttpPost]
public ActionResult AddItems([DataSourceRequest] DataSourceRequest request, [Bind(Prefix="models")] IEnumerable<WebForm850Item> web850Items)
{
var results = new List<WebForm850Item>();
if (web850Items != null && ModelState.IsValid)
{
HttpContext.Session.SetObjectAsJson("850Items", web850Items);
//foreach (var product in web850Items)
//{
//_form850Items.Add(product);
//results.Add(product);
//}
}
return Json(results.ToDataSourceResult(request, ModelState));
}
[HttpPost]
public ActionResult SaveItems([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<WebForm850Item> web850Items)
{
HttpContext.Session.SetObjectAsJson("850Items",web850Items);
foreach (var web850Item in web850Items)
{
ViewBag.POItems.Add(web850Item);
}
return Json(web850Items.ToDataSourceResult(request, ModelState));
}
While the method is being called, I am not getting web850Items variable being populated. What am I missing?