Kendo Grid calls 'create' operation instead of 'update' after adding new record
kendo-grid, kendo-ui
Solution
I have also the same problem & I have tried this & it will work.
.Events(events => events.RequestEnd("onRequestEnd"))
And in this function use belowe:
function onRequestEnd(e) {
var tmp = e.type;
if (tmp == "create") {
//RequestEnd event handler code
alert("Created succesully");
var dataSource = this;
dataSource.read();
}
else if (tmp == "update") {
alert("Updated succesully");
}
}
Try to Use this code in onRequestEnd event of grid
var dataSource = this;
dataSource.read();
Hope that it will help you.
Problem
I've setup a basic Kendo Grid and I'm using the DataSourceResult class from the PHP Wrapper library on the sever side. I've come across a strange issue... if I `create` a new record and then edit it (without refreshing the page), the `create` operation is called again, rather than the `update` operation. If the page is refreshed after adding the new record, the `update` operation is called correctly after making changes to the record. I can confirm that the DataSourceResult class is returning the correct data after the `create` operation, including the `id` of the new record. Any ideas why this is happening (and how to stop it)? Thanks Update: Here's the datasource code. The query string in the url is just to easily distinguish the requests in Chrome's console. The additional data passed with each request is used by `ajax.php` to distinguish the different actions requested. ``` data = new kendo.data.DataSource({ transport: { create: { url: '/ajax.php?r=gridCreate', dataType: 'json', type: 'post', data: { request: 'grid', type: 'create' } }, read: { url: '/ajax.php?request=gridRead', dataType: 'json', type: 'post', data: { request: 'grid', type: 'read' } }, update: { url: '/ajax.php?r=gridUpdate', dataType: 'json', type: 'post', data: { request: 'grid', type: 'update' } }, destroy: { url: '/ajax.php?r=gridDestroy', dataType: 'json', type: 'post', data: { request: 'grid', type: 'destroy' } }, parameterMap: function(data, operation) { if (operation != "read"){ data.expires = moment(data.expires).format('YYYY-MM-DD HH:mm'); } return data; } }, schema: { data: 'data', total: 'total', model: { id: 'id', fields: { id: { editable: false, nullable: true }, code: { type: 'string' }, expires: { type: 'date' }, enabled: { type: 'boolean', defaultValue: true } } } }, pageSize: 30, serverPaging: true, serverSorting: true, serverFiltering: true }); ```