javascript - 剑道在网格下拉菜单中更新页面上的任何点击
问题描述
我们已经在我们的应用程序中将我们的 Kendo JS 从 2.1008 升级到了 2.516。
我正在使用剑道网格的网格下拉编辑功能。
在以前的版本(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
});
}
}
有人可以指出我必须在哪里进行更改以解决此问题吗?
解决方案
推荐阅读
- ios - 设置适合按钮背景图像的方面
- sql - PostgreSQL - 将数据从 jsonb 数组移动到单独的表
- javascript - 在每个 javascript 中获取多个值
- c# - UserControl 在设计时生成子控件
- winapi - 试图获取 wow64cpu.dll 的基地址
- python - Seaborn 热图刻度
- laravel - 当前密码、新密码和确认新密码的验证器 laravel
- mysql - Innobackupex 从 SSH 恢复
- amazon-web-services - 如何在本地 Appium 上运行 AWS Device Farm TestNG 测试文件
- apache-spark - 从 spark 授予所有 uri