Javascript 无法读取属性';数据';使用customdropdown创建未定义的剑道ui js网格

Javascript 无法读取属性';数据';使用customdropdown创建未定义的剑道ui js网格,javascript,jquery,kendo-ui,Javascript,Jquery,Kendo Ui,以下是我的js代码: $(document).ready(function () { $("#grid").kendoGrid({ dataSource: { transport: { read: { url: '/Discount/Get', dataType: "json", },

以下是我的js代码:

$(document).ready(function () {
    $("#grid").kendoGrid({
        dataSource: {
            transport: {
                read: {
                    url: '/Discount/Get',
                    dataType: "json",
                },
                update: {
                    url: '/Discount/Update',
                    dataType: "json",
                    type: "POST"
                },
                destroy: {
                    url: '/Discount/Delete',
                    dataType: "json",
                    type: "POST"
                },
                create: {
                    url: '/Discount/Add',
                    dataType: "json",
                    type: "POST"
                },
                parameterMap: function (options, operation) {
                    if (operation == "update") {
                        return JSON.stringify(options);
                    }
                    if (operation == "create") {
                        return options;
                    }
                    if (operation == "destroy") {
                        return JSON.stringify(options);
                    }
                }
            },
            schema: {
                model: {
                    id: "Id",
                    fields: {
                        Id: { type: "number" },
                        TopItemName: { type: "string" },
                        DiscountValue: { type: "number" },
                    }
                }
            }
        },
        toolbar: ["create", "save", "cancel"],
        height: 400,
        pageable: true,
        columns: [
        {
            field: "TopItemName",
            editor: topItemDropDown,
            template: "#=TopItemName#"
        },
        {
            field: "DiscountValue",
            format: "{0:p0}",
            editor: function (container, options) {
                $("<input name='DiscountValue'>")
                .appendTo(container)
                .kendoNumericTextBox(
                  {
                      min: 0,
                      max: 1.00,
                      step: 0.01
                  });
            }
        }],
        editable: true
    });

    function topItemDropDown(container, options) {
        $('<input required data-text-field="TopItemName" data-value-field="TopItemName" data-bind="value:' + options.field + '"/>')
            .appendTo(container)
            .kendoDropDownList({
                autoBind: false,
                dataSource: {
                    transport: {
                        url: '/Discount/GetTopItemName',
                        dataType: "jsonp",
                        type: "POST",
                        contentType: "application/json"
                    }
                }
            });
    }
});

什么是数据?为什么它没有定义?

我忘记了数据源的read函数,所以它应该是这样的:

     transport:{
                        read: {
                            url: '/Discount/GetTopItemName',
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json"
                        },
                 }

我今天也犯了同样的错误,我认为您代码中的错误如下:

Id: { type: "number" }, //THIS IS WRONG!!!
……应该是:

Id: { editable: false, nullable: true },

您问题中的代码在数据源上定义了读取函数。所以这显然不是解决办法。@DanielGustafsson-你找到解决办法了吗?@DanielGustafsson-目前遇到同样的情况,你能解决吗?谢谢
Id: { editable: false, nullable: true },