When my MVC razor Kendo Grid is in:
GridEditMode.InCell
and I click on "cancel changes"
or in:
GridEditMode.InLine
and click on "cancel" Changes,
The lines are dropped from the grid..
Apparently this has to do with the fact that I load my grid on the client ajax call (generated by a treeview). It seems as if the grid is treating the lines as new because they were loaded at a later time then when the grid was created.
What can I do to avoid this problematic behaivior? I have read many users have similar issues but no straightforward solution.
Here is my JavaScript:
01.
function
onSelect(e) {
02.
var
node = e.node;
03.
var
nodedata = $(
"#tvPH"
).data(
'kendoTreeView'
).dataItem(node);
04.
//Fill the Proc Equip Grid
05.
if
(nodedata.nodeType ==
"pls"
) {
06.
$.ajax({
07.
//url: "/PlantHierArchy/GetProcEquip?plsID=" + nodedata.id,
08.
url:
"/PlantHierArchy/ForeignKeyColumn_Read?plsID="
+ nodedata.id,
09.
dataType:
"json"
,
10.
cache:
false
,
11.
type:
'GET'
,
12.
success:
13.
function
(result) {
14.
$(
"#lblPSU"
).text(
'Proc. Equipment Managment for Plant Sub-Unit: '
+ node.textContent);
15.
var
procGrid = $(
"#ProcEqGrid"
).data(
"kendoGrid"
);
16.
procGrid.dataSource.data(result.Data);
17.
18.
},
19.
error:
function
(jqXHR, textStatus) {
20.
alert(
"Request failed: "
+ textStatus);
21.
}
22.
});
23.
}
24.
}
and here is my Grid:
01.
@(Html.Kendo().Grid<
PMTWebReconcile.Models.ProcEquipViewModel
>()
02.
.Name("ProcEqGrid")
03.
//.HtmlAttributes(new { style = "height: 480px; margin-left: 260px" })
04.
.Columns(columns =>
05.
{
06.
columns.Bound(P => P.peqID).Width(20);
07.
columns.Bound(P => P.peqName).Width(120);
08.
columns.Bound(P => P.peqTag).Width(120);
09.
columns.Bound(P => P.peqDescription).Width(200);
10.
//columns.Bound(P => P.eqtID).Width(30);
11.
columns.ForeignKey(p => p.eqtID, (System.Collections.IEnumerable)ViewData["EqptTypes"], "TypeID", "Type").Title("Eqpt Type").Width(120);
12.
13.
columns.Bound(P => P.eqsID1).Width(30);
14.
columns.Bound(P => P.eqsID2).Width(30);
15.
columns.Bound(P => P.eqsID3).Width(30);
16.
columns.Bound(P => P.peqActive).Width(30);
17.
//columns.Command(commands =>
18.
//{
19.
// commands.Edit();
20.
// //commands.Delete().ButtonType(GridButtonType.Image);
21.
22.
//}).Width(100);
23.
24.
})
25.
.ToolBar(toolbar => { toolbar.Create(); toolbar.Save(); })
26.
.HtmlAttributes(new { style = "veritcal-align:top" })
27.
//.Editable(editable => editable.Mode(GridEditMode.InLine)) // Use inline editing mode.
28.
.Editable(editable => editable.Mode(GridEditMode.InCell))
29.
.DataSource(dataSource =>
30.
dataSource
31.
.Ajax()
32.
.Batch(true)
33.
.Model(model =>
34.
{
35.
model.Id(P => P.peqID); // Specify the property which is the unique identifier of the model.
36.
model.Field(P => P.peqID).Editable(false); // Make the ProductID property not editable.
37.
model.Field(P => P.Type).DefaultValue(new PMTWebReconcile.Models.EquipTypeViewModel());
38.
})
39.
.Create(create => create.Action("ForeignKeyColumn_Create", "PlantHierArchy")) // Action invoked when the user saves a new data item.
40.
// .Read(read => read.Action("ForeignKeyColumn_Read", "PlantHierArchy", new { plsID = (subUnitID) }))
41.
.Update(update => update.Action("ForeignKeyColumn_Update", "PlantHierArchy")) // Action invoked when the user saves an updated data item.
42.
)
43.
.Pageable()
44.
.Sortable()
45.
//.ClientDetailTemplateId
46.
)
*