我有 Odata WebApi,我想用那里的数据填充我的下拉列表。 我有数据源:
var postsDataSource = new kendo.data.DataSource({
类型:'odata',
服务器过滤:true,
运输: {
读: {
url: "/odata/帖子",
数据类型:“json”
},
},
架构:{
模型:kendo.data.Model.define({
身份证号:“身份证号”,
区域ID:“区域ID”
}),
数据:函数(res){
debugger;//此代码无法访问!
控制台.log(res);
返回res.value;
}
},
});
和下拉列表如下:
var posts = $("#searchPost").kendoDropDownList({
optionLabel: "Выберите регион...",
dataTextField: "NameRu",
dataValueField: "Id",
dataSource: postsDataSource,
}).data("kendoDropDownList");
这部分代码执行 odata 查询并在 firebug 控制台中返回以下 json 响应:
{
"odata.metadata":"http://localhost:11029/odata/$metadata#Posts","odata.count":"13","value":[
{
"Id":0,"Number":"Lenina45","RegionId":1,"NameRu":"\u041b\u0435\u043d\u0438\u043d\u0430 45","NameKz":"\u041b\u0435\u043d\u0438\u043d\u0430 45","ShortName":"\u041b\u0435\u043d\u0438\u043d\u0430 45","DateBegin":null,"DateEnd":null,"OptimisticLockField":null
},{
"Id":1,"Number":"Zhumabaeva15","RegionId":2,"NameRu":"\u0416\u0443\u043c\u0430\u0431\u0430\u0435\u0432\u0430 15","NameKz":"\u0416\u0443\u043c\u0430\u0431\u0430\u0435\u0432\u0430 15","ShortName":"\u0416\u0443\u043c\u0430\u0431\u0430\u0435\u0432\u0430 15","DateBegin":null,"DateEnd":null,"OptimisticLockField":null
},
.....
]
}
在此响应之后,我收到以下奇怪的错误:
类型错误:d.d 未定义; 并且 dropdownlist 没有在 json 响应上方显示我。 当我使用 odata web api 填充剑道网格时,数据源中的以下代码解决了我的问题:
schema: {
data: function (res) {
return res.value;
}
},
但是现在,当我将它用于下拉列表时,它根本不起作用,无法访问。
PS>抱歉我的英语不好。
最佳答案
您的数据位于您响应的内部对象“值”上,您的响应包括页面大小、元数据 url,因此我们需要编写 kendo dataSource 可以理解的数据,这里是一个示例
:注意删除“type: 'odata'”并检查,因为您说的是数据来自数据函数的数据源,我认为不需要它。
var postsDataSource = new kendo.data.DataSource({
serverFiltering: true,
transport: {
read: {
url: "/odata/Posts",
dataType: "json"
},
},
schema: {
model: {
Id: "Id",
fields: {
Id: { type: "number" },
NameRu: { type: "string" },
NameKz: { type: "string"},
ShortName: { type: "string" }
}
},
data: function (response) {
return response.value;
},
total: function(response) {
return response.odata.count;
}
},
});
尝试一下希望这会有所帮助。
关于javascript - Kendo 数据源 shema.data 不适用于下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378988/