Kendo ui 如果指定了函数,则剑道UI不调用create
使用Kendo.web.js版本2013.2.716和2012.3.1315,我尝试在transport.create中使用函数,而不是调用URL。我发现这个函数没有被调用。相反,会调用一个默认URL,生成的HTML似乎会在剑道内部引起错误,因为它应该是JSON 我假设这是某种类型的配置错误,但我不知道问题出在哪里 以下是代码片段:Kendo ui 如果指定了函数,则剑道UI不调用create,kendo-ui,transport,Kendo Ui,Transport,使用Kendo.web.js版本2013.2.716和2012.3.1315,我尝试在transport.create中使用函数,而不是调用URL。我发现这个函数没有被调用。相反,会调用一个默认URL,生成的HTML似乎会在剑道内部引起错误,因为它应该是JSON 我假设这是某种类型的配置错误,但我不知道问题出在哪里 以下是代码片段: var clientListDS = new kendo.data.DataSource({ transport: { read:
var clientListDS = new kendo.data.DataSource({
transport: {
read: {
url: window.baseUrl + 'HealthCheck/ClientSummary',
dataType: 'json',
type: 'POST'
},
create: function(a,b,c) { alert('Create'); },
createY: window.baseUrl + 'HealthCheck/DontCallMe',
createX: {
url: window.baseUrl + 'HealthCheck/DontCallMe',
dataType: 'json',
type: 'POST'
},
whatWeWantCreateToDo: function () {
showChooseDialog('Some Random String', 'Select Client', OnRefreshInactiveClientList);
},
destroy: function () {
alert('destroy');
},
update: function () {
alert('update');
}
},
autoSync: true,
schema: {
model: {
id: 'ID',
fields: {
ID: { required: false, type: 'number', nullable: true },
ClientName: { type: 'string' },
ClientTag: { type: 'string' },
Status: { type: 'string' }
}
}
}
});
然后,我使用生成的数据源构建如下网格:
$('#cClientGrid').kendoGrid({
dataSource: clientListDS,
columns: [
{ field: 'ClientTag', title: 'Tag'},
{ field: 'ClientName', title: 'Name' },
{ field: 'Status' }
],
editable: {
mode: 'incell',
createAt: 'bottom'
},
edit: function (pEvent) {
if (pEvent.model.isNew())
alert('create');
else
alert('Edit');
},
toolbar: ['create']
});
一些值得注意的行为:
- 您会在创建配置时看到多次尝试。如果我使用CreateY或CreateX,它将调用生成的URL。如果我使用Create或WhatWeWantCreateToDo,我最终会下载包含页面,其中模式的每个元素都是get string项(我假设这是某种默认行为,因为我找不到对下载的URL的引用)
- 当我关闭自动同步时,当我使用工具栏创建新项目时,网格将调用其编辑功能。启用自动同步时,不会调用编辑函数。而是运行数据源创建功能
任何关于如何调用函数而不是URL的想法或见解都将不胜感激。首先在
传输中制作所有内容都是URL或函数,不要混淆它们。
如果需要将read
作为一个函数来实现,只需执行以下操作:
transport: {
read : function (options) {
$.ajax({
url: window.baseUrl + 'HealthCheck/ClientSummary',
dataType: 'json',
type: 'POST',
success : function (result) {
options.success(result);
}
});
},
首先,在transport
中创建所有URL或函数,不要将它们混淆。
如果需要将read
作为一个函数来实现,只需执行以下操作:
transport: {
read : function (options) {
$.ajax({
url: window.baseUrl + 'HealthCheck/ClientSummary',
dataType: 'json',
type: 'POST',
success : function (result) {
options.success(result);
}
});
},
尝试将所有传输方法定义为函数或URL(都一样)。谢谢。我是根据这里的答案做的。这就把它清理干净了,现在我要弄清楚的是,如何用函数来模拟URL读取。尝试将所有传输方法定义为函数或URL(都一样)。谢谢。我是根据这里的答案做的。现在我要弄清楚的是,如何用一个函数来模拟URL的读取。对options.success的调用无疑是一个谜。再次感谢。选择。成功绝对是一个谜。再次感谢。