为什么 Kendo 数据源函数没有被调用?
Why Kendo datasource functions is not called?
我正在尝试将从数据源返回的数据绑定到网格,但问题是我的数据源函数中没有一个被调用...
transactionHistoryGridDS: new kendo.data.DataSource({
error: function () {
alert("erroe")
},
complete: function () {
alert("completed")
},
success: function () {
alert("success");
},
transport: {
read: {
dataType: "json",
type: 'POST',
url: args.TransactionHistoryUrl,
data: {
id: function () {return vm.transactionHistoryParams.id },
originBranch: function () {return vm.transactionHistoryParams.originBranch },
take: function () {return vm.transactionHistoryParams.take },
skip: function () {return vm.transactionHistoryParams.skip }
}
},
schema: {
parse: function (data) {
alert("hey...")
return data;
},
data: "data",
total: "total",
},
pageSize: 20,
serverPaging: false
}
}),
当我通过下面的代码调用读取数据源时
vm.transactionHistoryGridDS.read();
Ajax 请求被调用,数据从服务器成功返回,但没有包括 success
和 error
和 complete
和 parse
的功能叫做
因此,数据未绑定到网格。
我看到一些错误需要修复,您的网格才能正常工作。
首先,schema
、pageSize
、serverPaging
的缩进级别错误,它应该与 transport
处于同一级别而不是在其中。
transport: {...},
schema: {...},
serverPaging: ...,
pageSize: ...
每个网格都应该有数据源属性,会自动调用读取并填充数据,您不需要将数据设置到网格或调用read()
函数:
$('#grid').kendoGrid({
dataSource: {
transport: {
read: {...}
}
}
});
在你的情况下,我假设 vm 是一个网格,所以你需要设置 dataSource:transactionHistoryGridDS,
检查下面的示例链接
如果您需要使用请求发送数据parameterMap
:
$('#grid').kendoGrid({
resizable: true,
filterable: true,
sortable: true,
pageable: {
pageSize: 10,
refresh: true,
pageSizes: [5, 10, 20, 100, 500, 1000]
},
dataSource: {
pageSize: 10,
serverPaging: true,
serverFiltering: true,
transport: {
read: {
url: 'url',
type: 'POST',
dataType: 'JSON',
contentType: 'application/json'
},
update: {...},
destroy: {...},
parameterMap(data, type) {
switch (type) {
case 'read':
let request = {};
request.page = data.page - 1;
request.page_size = data.pageSize;
request.sort = data.sort;
request.filter = data.filter;
return JSON.stringify(request);
case 'destroy':
return kendo.stringify(data);
default:
break;
}
}
}
}
});
有两种方法可以从kendo dataSource
请求中获取数据,第一种是在请求和响应完成时调用的complete
函数。第二个是对每个数据源请求的承诺。
第一个例子:complete call
第二个例子:promise call
我正在尝试将从数据源返回的数据绑定到网格,但问题是我的数据源函数中没有一个被调用...
transactionHistoryGridDS: new kendo.data.DataSource({
error: function () {
alert("erroe")
},
complete: function () {
alert("completed")
},
success: function () {
alert("success");
},
transport: {
read: {
dataType: "json",
type: 'POST',
url: args.TransactionHistoryUrl,
data: {
id: function () {return vm.transactionHistoryParams.id },
originBranch: function () {return vm.transactionHistoryParams.originBranch },
take: function () {return vm.transactionHistoryParams.take },
skip: function () {return vm.transactionHistoryParams.skip }
}
},
schema: {
parse: function (data) {
alert("hey...")
return data;
},
data: "data",
total: "total",
},
pageSize: 20,
serverPaging: false
}
}),
当我通过下面的代码调用读取数据源时
vm.transactionHistoryGridDS.read();
Ajax 请求被调用,数据从服务器成功返回,但没有包括 success
和 error
和 complete
和 parse
的功能叫做
因此,数据未绑定到网格。
我看到一些错误需要修复,您的网格才能正常工作。
首先,schema
、pageSize
、serverPaging
的缩进级别错误,它应该与 transport
处于同一级别而不是在其中。
transport: {...},
schema: {...},
serverPaging: ...,
pageSize: ...
每个网格都应该有数据源属性,会自动调用读取并填充数据,您不需要将数据设置到网格或调用read()
函数:
$('#grid').kendoGrid({
dataSource: {
transport: {
read: {...}
}
}
});
在你的情况下,我假设 vm 是一个网格,所以你需要设置 dataSource:transactionHistoryGridDS,
检查下面的示例链接
如果您需要使用请求发送数据parameterMap
:
$('#grid').kendoGrid({
resizable: true,
filterable: true,
sortable: true,
pageable: {
pageSize: 10,
refresh: true,
pageSizes: [5, 10, 20, 100, 500, 1000]
},
dataSource: {
pageSize: 10,
serverPaging: true,
serverFiltering: true,
transport: {
read: {
url: 'url',
type: 'POST',
dataType: 'JSON',
contentType: 'application/json'
},
update: {...},
destroy: {...},
parameterMap(data, type) {
switch (type) {
case 'read':
let request = {};
request.page = data.page - 1;
request.page_size = data.pageSize;
request.sort = data.sort;
request.filter = data.filter;
return JSON.stringify(request);
case 'destroy':
return kendo.stringify(data);
default:
break;
}
}
}
}
});
有两种方法可以从kendo dataSource
请求中获取数据,第一种是在请求和响应完成时调用的complete
函数。第二个是对每个数据源请求的承诺。
第一个例子:complete call
第二个例子:promise call