单击网格删除行触发网格数据源更改事件,但是触发参数映射并且没有远程传输正在运行。我可以通过在更改事件中调用.sync方法来触发parameterMap,但这不会在此处传递已删除的数据,而只会传递剩余的行数据。
allUsersDataSource.fetch(function() {
allUsers = allUsersDataSource.data();
})
var assignedUsersDataSource = new kendo.data.DataSource({
// autoSync: true,
transport: {
read:{
url: API_URL+"frank/getassignedusers/"+documentId,
dataType: "json"
},
create: {
type: "POST",
url: API_URL+"frank/addusertodocument",
dataType: "json"
},
update: {
type: "POST",
url: API_URL+"frank/editusertodocument",
dataType: "json"
},
destroy:{
type: "POST",
url: API_URL+"frank/removeuserdocument",
dataType: "json"
},
batch: true,
parameterMap: function(data, operation) {
console.log ("assignedUsersDataSource.parameterMap.!! data:", data);
console.log ("assignedUsersDataSource.parameterMap.!! operation:", operation);
if (operation === "destroy" ) {
//..
}
if (operation === "create" && data.UserID) {
//..
}
}
},
change: function(e) {
console.log("assignedUsersDataSource.change: e.items :: ", e.items );
if(e.action === "remove"){
// assignedUsersDataSource.sync();
}
//edycja i wstawianie
if(e.action === "itemchange"){
// assignedUsersDataSource.sync();
}
// itemchange to zawiera
if(e.action === "add"){
// assignedUsersDataSource.sync();
}
},
pageSize: 4,
schema: {
model: {
fields: {
UserName: { editable: false, nullable: true },
Surname: { editable: false, nullable: true },
UserID: { field: "UserID", defaultValue: 1 },
GroupName: { editable: false, nullable: true },
}
}
}
});
var _grid = $("\#grid-single-user-groups").kendoGrid({
dataSource: assignedUsersDataSource,
filterable: true,
scrollable: false,
// toolbar: ["create", "save"],
toolbar: ["create"],
pageable: true,
columns: [
{
field: "UserID", width: "100%",
editor: userDropDownEditor,
title: "Agent",
template: function(userID) {
for (var idx = 0, length = allUsers.length; idx < length; idx++) {
if (allUsers[idx].UserNameID == userID.UserID) {
return allUsers[idx].Login;
}
}
}
},
{ command: [ "destroy"], title: " ", width: "250px" }
],
editable: {mode: "incell"},
});
function userDropDownEditor(container, options) {
$('<input data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "Login",
dataValueField: "UserNameID",
filter: "contains",
dataSource: allUsersDataSource,
valuePrimitive:true,
})
}