Hi. I'm trying to use the grid to display some data which a user is supposed to change. The problem is that so far I have been unsuccessful in making the grid update/edit or delete, nothing happens when I click the "Save" button. Or when I press enter. It just doesn't hit the controller when I set a break point. If I create or read, it works fine.
To create the project I did the following
- Started a new MVC project though the basic asp.net web wizard
- Converted to telerik application to UI for ASP.net MVC
- Updated all scripts to their newest version
- Enabled entity framework migrations with automatic migrations.
My versions are:
* jQuery 1.10.2
* KendoUI 2014.1.415
* Bootstrap 3.0.0.0
* MVC 5.1.0.0
ManageWorkPlacements.cshtml
01.
@(Html.Kendo().Grid<
WorkPlacementModel
>()
02.
.Name("Grid")
03.
.Columns(columns =>
04.
{
05.
columns.Bound(p => p.Name);
06.
columns.Bound(p => p.CvrNumber);
07.
columns.Command(command => command.Destroy()).Width(110);
08.
})
09.
.ToolBar(toolbar =>
10.
{
11.
toolbar.Create();
12.
toolbar.Save();
13.
})
14.
.Editable(editable => editable.Mode(GridEditMode.InCell))
15.
.Pageable()
16.
.Navigatable()
17.
.Sortable()
18.
.Scrollable()
19.
.DataSource(dataSource => dataSource
20.
.Ajax()
21.
.Batch(true)
22.
.PageSize(20)
23.
.ServerOperation(false)
24.
.Events(events => events.Error("error_handler"))
25.
.Model(model => model.Id(p => p.Id))
26.
.Create("WorkPlacement_Create", "WorkPlacement")
27.
.Read("WorkPlacement_Read", "WorkPlacement")
28.
.Update("WorkPlacement_Update", "WorkPlacement")
29.
.Destroy("WorkPlacement_Destroy", "WorkPlacement")
30.
)
31.
)
32.
<
script
type
=
"text/javascript"
>
33.
function error_handler(e) {
34.
if (e.errors) {
35.
var message = "Errors:\n";
36.
$.each(e.errors, function (key, value) {
37.
if ('errors' in value) {
38.
$.each(value.errors, function () {
39.
message += this + "\n";
40.
});
41.
}
42.
});
43.
alert(message);
44.
}
45.
}
46.
</
script
>
WorkPlacementController.cs
01.
using
System;
02.
using
System.Collections.Generic;
03.
using
System.Linq;
04.
using
System.Web;
05.
using
System.Web.Mvc;
06.
using
Kendo.Mvc.Extensions;
07.
using
Kendo.Mvc.UI;
08.
using
RegistreringMVC.Migrations;
09.
using
RegistreringMVC.Models;
10.
using
RegistreringMVC.Services;
11.
12.
namespace
RegistreringMVC.Controllers
13.
{
14.
public
class
WorkPlacementController : Controller
15.
{
16.
private
WorkPlaceService workPlacementService;
17.
18.
public
WorkPlacementController()
19.
{
20.
workPlacementService =
new
WorkPlaceService(
new
RegistreringEntities());
21.
}
22.
23.
public
ActionResult WorkPlacement_Read([DataSourceRequest] DataSourceRequest request)
24.
{
25.
return
Json(workPlacementService.Read().ToDataSourceResult(request));
26.
}
27.
28.
[AcceptVerbs(HttpVerbs.Post)]
29.
public
ActionResult WorkPlacement_Create([DataSourceRequest] DataSourceRequest request, [Bind(Prefix =
"models"
)]IEnumerable<WorkPlacementModel> workPlacements)
30.
{
31.
var results =
new
List<WorkPlacementModel>();
32.
33.
if
(workPlacements !=
null
&& ModelState.IsValid)
34.
{
35.
foreach
(var workPlacement
in
workPlacements)
36.
{
37.
workPlacementService.Create(workPlacement);
38.
}
39.
}
40.
41.
return
Json(results.ToDataSourceResult(request, ModelState));
42.
}
43.
44.
[AcceptVerbs(HttpVerbs.Post)]
45.
public
ActionResult WorkPlacement_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix =
"models"
)]IEnumerable<WorkPlacementModel> workPlacements)
46.
{
47.
if
(workPlacements !=
null
&& ModelState.IsValid)
48.
{
49.
foreach
(var workPlacement
in
workPlacements)
50.
{
51.
workPlacementService.Update(workPlacement);
52.
}
53.
}
54.
55.
return
Json(workPlacements.ToDataSourceResult(request, ModelState));
56.
}
57.
58.
[AcceptVerbs(HttpVerbs.Post)]
59.
public
ActionResult WorkPlacement_Destroy([DataSourceRequest] DataSourceRequest request, [Bind(Prefix =
"models"
)]IEnumerable<WorkPlacementModel> workPlacements)
60.
{
61.
if
(workPlacements.Any())
62.
{
63.
foreach
(var workPlacement
in
workPlacements)
64.
{
65.
workPlacementService.Destroy(workPlacement);
66.
}
67.
}
68.
69.
return
Json(workPlacements.ToDataSourceResult(request, ModelState));
70.
}
71.
}
72.
}
The code is taken almost directly from the offline samle (just to make it work). But still it doesn't. I tried remaking the whole project, in case I had changed something without thinking about it. But this does not help either. If you require any further code, please reply and i'll add it.
Thank you
Daniel