Мы обновили наш Kendo JS с 2.1008 до 2.516 в нашем приложении.
Я использую функцию редактирования выпадающего меню в сетке Kendo Grid.
В предыдущей версии (2.1008), когда мы щелкаем ячейку сетки, выпадающий список загружается и только при нажатии на новый элемент раскрывающегося списка запускается событие update
сетки кендо.
В текущей обновленной версии (2.516), когда мы щелкаем по ячейке сетки, выпадающий список загружается, и когда вы щелкаете в любом месте страницы, кроме выпадающего, происходит событие update
. то есть, несмотря на то, что я не изменил (не нажал) ни один элемент раскрывающегося списка, сетки обновляются, хотя он совпадает с предыдущим значением (отображается ненужное сообщение «Успешно обновлено»).
Ниже приведен код, который срабатывает при любом нажатии (в любом месте экрана), даже если раскрывающийся список не изменяется.
MyProject.Base.DataSource = new kendo.data.DataSource({
serverPaging: true,
serverSorting: true,
pageSize: KendoBaseEntity.defaultPageSize,
autoSync: true,
schema: {
data: "d.Response",
total: "d.Total",
model: {
id: "MyId",
fields: {
MyId: {
editable: false
},
MyParentColumn: {
editable: false,
type: "string"
},
MyColumn: {
editable: isEditable,
type: "string"
}
}
}
},
requestEnd: function(e) {
KendoBaseEntity.OnUpdateSuccess(e)
var proxy = new MyProject.Utility.ServiceProxy("MySomeService1");
proxy.invoke("GetMyData1", {
"filter": MyProject.Base.SearchFilter
},
function(response) {
if (response != null && response.length > 0) {
$("#aMyServer").text('_' + response.length + '_ Servers Not Found');
$("#aMyServer").show();
$("#aMyServer").attr('data-info', response);
} else {
$('#txtRaMyServerListDialog').text('');
$("#aMyServer").hide();
}
}
);
},
requestStart: function(e) {
if (KendoDisplayPreferences.preventajaxcall) {
e.preventDefault();
}
},
transport: {
read: {
url: "MyServices/" + MyProject.Base.ServiceName + ".asmx/" + MyProject.Base.SearchServiceMethod,
contentType: "application/json; charset=utf-8",
type: "POST"
},
update: {
url: "MyServices/MyService.asmx/UpdateInGrid",
contentType: "application/json; charset=utf-8",
type: "POST"
},
parameterMap: function(data, operation) {
if (data.page != null) {
MyProject.Base.SearchFilter.Options.Page = data.page > 0 ?
data.page : MyProject.Base.SearchFilter.Options.Page;
}
if (data.take != null) {
MyProject.Base.SearchFilter.Options.RecordsPerPage = data.take > 0 ?
data.take : MyProject.Base.SearchFilter.Options.RecordsPerPage;
}
if (data.sort != null && data.sort.length > 0) {
var sortarray = data.sort;
var sortinput = '';
if (sortarray.length > 1) {
$(sortarray).each(function(index, value) {
var colName = value.field;
var order = (value.dir == "asc") ?
"ascending" :
"descending";
var resultarray = MyProject.Base.ResultsColumnModel;
$(resultarray).each(function(index, ele) {
if (ele != null) {
if (ele.field != null && ele.field == colName) {
colName = ele.attributes.sortname;
sortinput = sortinput + colName + ' ' + order + ';';
}
}
});
});
MyProject.Base.SearchFilter.Options.SortColumn = null;
MyProject.Base.SearchFilter.Options.MultipleSort = sortinput;
} else {
var columname = data.sort[0].field;
columname = columname == "DefaultB" ? "Default B" : columname;
columname = columname == "DefaultA" ? "Default A" : columname;
//Defect 2443
if (columname == "StartDate-EndDate" || columname == "Default A" || columname == "Default B") {
MyProject.Base.SearchFilter.Options.MultipleSort = null;
MyProject.Base.SearchFilter.Options.SortColumn = columname;
MyProject.Base.SearchFilter.Options.SortOrder = data.sort[0].dir;
} else {
var grid = $("#ResultsGrid").data("kendoGrid");
var columns = grid.columns;
$(columns).each(function(index, value) {
if (value.field != null && value.field == columname) {
MyProject.Base.SearchFilter.Options.MultipleSort = null;
MyProject.Base.SearchFilter.Options.SortColumn = value.attributes.sortname;
}
});
MyProject.Base.SearchFilter.Options.SortOrder = data.sort[0].dir;
}
}
} else {
if (somecondition) {
MyProject.Base.SearchFilter.Options.SortColumn = null;
MyProject.Base.SearchFilter.Options.MultipleSort = 'Server.ServerName ascending;DEPLOYMENT_SEQUENCE ascending';
}
}
if (operation == "read") {
if (MyProject.Base.SearchFilter.Options.SortColumn == 'ServerName') {
MyProject.Base.SearchFilter.Options.SortColumn = 'Server.ServerName';
}
var inputvar = {
'filter': MyProject.Base.SearchFilter
};
return JSON2.stringify(inputvar)
}
if (operation == "update") {
debugger
if (data != null) {
var myId = data.MyId;
var updateValue = data[KendoDeployment.EditFieldName];
switch (KendoDeployment.EditFieldName) {
case "MyColumnAttributes":
updateValue = data[KendoDeployment.EditFieldName].UserId;
KendoDeployment.EditFieldName = "MyColumn";
break;
case "MyColumn":
updateValue = data["MyColumnAttributes"].UserId;
KendoDeployment.EditFieldName = "MyColumn";
};
return JSON2.stringify({
'MyId': myId,
"updateValue": updateValue,
"updateField": KendoDeployment.EditFieldName
});
}
}
}
}
})
Код в вышеприведенном скрипте, который вызывается для любого события клика:
if (operation == "update") {
debugger
if (data != null) {
var myId = data.MyId;
var updateValue = data[KendoDeployment.EditFieldName];
switch (KendoDeployment.EditFieldName) {
case "MyColumnAttributes":
updateValue = data[KendoDeployment.EditFieldName].UserId;
KendoDeployment.EditFieldName = "MyColumn";
break;
case "MyColumn":
updateValue = data["MyColumnAttributes"].UserId;
KendoDeployment.EditFieldName = "MyColumn";
};
return JSON2.stringify({
'MyId': myId,
"updateValue": updateValue,
"updateField": KendoDeployment.EditFieldName
});
}
}
Может кто-нибудь указать, где я должен внести изменения, чтобы решить эту проблему?