Kendo ui 如何在kendo.data.Datasource上获得单个结果
我有一个像这样的Odata结果Kendo ui 如何在kendo.data.Datasource上获得单个结果,kendo-ui,kendo-mobile,kendo-mvvm,Kendo Ui,Kendo Mobile,Kendo Mvvm,我有一个像这样的Odata结果 {"odata.metadata":"https://localhost/DocTalkMobileWebApiOData/odata/$metadata#MasterPatient/@Element","PatUniqueId":"39e713db-6a0e-4e59-bf7b-033f4fc47ad5", "PatID":null, "pat_lname":"White","pat_fname":"Peter","pat_mi":"
{"odata.metadata":"https://localhost/DocTalkMobileWebApiOData/odata/$metadata#MasterPatient/@Element","PatUniqueId":"39e713db-6a0e-4e59-bf7b-033f4fc47ad5", "PatID":null,
"pat_lname":"White","pat_fname":"Peter","pat_mi":" ","pat_ssn":"270787655","pat_dob":"08/07/1973","pat_sex":"M","pat_status":null,"priInsID":2,"secInsID":1,"PCPID":1,"InternalDrID":1,"EXPID":1,"EXPDate":"","pat_phone":null,"isNew":true,"imported":true,"byWhom":"dt","lastUpdate":"2011-03-30T09:41:57.36","changeStamp":"AAAAAAAAIUE=","address":"","city":"","state":"","zip":"","currentMcp":"","currentVisitCount":-2,"otherId":"543674","pcpName":null,"hasChanges":true,"ProgramSource":null,"mrnID":"","createdBy":null,"createdDate":"2007-10-26T10:16:15","expLocation":null,"ethnicId":1,"prefLanguageId":1,"raceId":1
}
我试图通过kendo.ui.datasource得到这个结果:
newPatient = new kendo.data.DataSource({
type: 'odata', // <-- Include OData style params on query string.
transport: {
read: {
url: url + '/MasterPatient(guid\'00000000-0000-0000-0000-000000000000\')', // <-- Get data from here
dataType: "json" // <-- The default was "jsonp"
},
parameterMap: function (options, type) {
var paramMap = kendo.data.transports.odata.parameterMap(options);
delete paramMap.$inlinecount; // <-- remove inlinecount parameter.
delete paramMap.$format; // <-- remove format parameter.
return paramMap;
}
},
schema: {
data: function (data) {
return data;
},
total: function (data) {
return data['odata.count']
},
}
});
newPatient.fetch(function () {
kendo.bind($('#newPatientTab'), newPatient);
});
请帮帮我。感谢在剑道UI中,DataSource仅适用于数组。如果您可以更改服务器响应以发送如下内容
[{"odata.metadata":"https://localhost/DocTalkMobileWebApiOData/odata/$metadata#MasterPatient/@Element","PatUniqueId":"39e713db-6a0e-4e59-bf7b-033f4fc47ad5","PatID":null,"pat_lname":"White","pat_fname":"Peter","pat_mi":" ","pat_ssn":"270787655","pat_dob":"08/07/1973","pat_sex":"M","pat_status":null,"priInsID":2,"secInsID":1,"PCPID":1,"InternalDrID":1,"EXPID":1,"EXPDate":"","pat_phone":null,"isNew":true,"imported":true,"byWhom":"dt","lastUpdate":"2011-03-30T09:41:57.36","changeStamp":"AAAAAAAAIUE=","address":"","city":"","state":"","zip":"","currentMcp":"","currentVisitCount":-2,"otherId":"543674","pcpName":null,"hasChanges":true,"ProgramSource":null,"mrnID":"","createdBy":null,"createdDate":"2007-10-26T10:16:15","expLocation":null,"ethnicId":1,"prefLanguageId":1,"raceId":1}]
那它就可以正常工作了。
注意,它是数组格式的
或
您可以在模式的数据函数中,在客户端将单个对象包装到数组中
schema: {
data: function(server-response) {
return [server-response];
}
}
剑道团队应该花更多时间做好文档。这意味着您没有使用来自后台的odata源代码。您需要考虑一下,如果后端不正确支持odata,那么您真的需要来自客户端的剑道odata源吗 请参阅ODataURL的此响应,“$format=json” 它应该在
值
字段中返回一个对象数组。
如果无法更改备份,则可以在Schema.data函数中格式化数据
schema: {
data: function (data) {
return [data];
},
您所说的
单一结果
是什么意思?不管odata查询如何,这个odata url是否总是返回一个结果?@Jayantha是的,我的意思是它只是一条记录:)是的,它现在可以正常工作了。我找到了另一种实现它的方法:$.getJSON(url+/MasterPatient(guid\'00000000-0000-0000-0000-000000000000\'),函数(数据){newPatient=new kendo.observable(数据);kendo.bind($('newPatientForm'),newPatient);});使用guid调用数据不是一个好主意。它不是通用的。如果它解决了您的问题,您可以接受答案。别把问题留着不谈。
schema: {
data: function (data) {
return [data];
},