javascript - Kendo 数据源 shema.data 不适用于下拉列表

标签 javascript kendo-ui odata

我有 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/

相关文章:

javascript - 更新到 addEventListener 可能会导致函数的返回值不传播?

javascript - 未定义不是函数 - RequireJS

javascript - 在 JavaScript 中将 "this"绑定(bind)到函数以仅导入其他几个函数一次是不好的做法吗?

复选框列,获取选定的值并传递给 Controller

javascript - 检测 kendoChart 上的缩放

c# - 使用 odata 和 web api 2 时创建 cookie

javascript - 将随机字符串传输到 .innerHTML

jquery - Kendo datepicker(monthpicker) 禁用特定月份

c# - 反序列化 OData.Error 消息

javascript - 如何将单个实体显示为弹出窗口