Kendo Grid DropdownList和插入模板错误

时间:2014-01-27 16:34:03

标签: javascript jquery drop-down-menu kendo-ui grid

我一直在努力解决这个问题并遇到障碍。我有一个带有下拉列表的kendo网格。

问题

  1. 当我通过选择DropdownList中的值编辑记录时, 字段未更新。
  2. 当我从工具栏中选择“添加命令”时,会有所不同 模板尝试渲染并引发错误“ 未捕获的ReferenceError: 在WinCC调试中,ParentMenu未定义为“ 。因此,没有任何事情发生。

  3. 当我从kendogrid列定义中注释掉“values:parentRef”时,所有命令[Add,Edit]都正确显示

  4. 我已经证明了我在这里遇到的错误 http://jsfiddle.net/BlowMan/5tNQy/

    JS代码

    $(function () {
    var mbModel = kendo.data.Model.define({
        id: "MenuId",
        fields: {
            "MenuId": {
                type: "number"
            },
                "DisplayText": {
                type: "string"
            },
                "MenuOrder": {
                type: "number"
            },
                "MenuStatus": {
                type: "boolean"
            },
                "HasKids": {
                type: "boolean"
            },
                "ParentMenu": {
                type: "number",
                defaultValue: 1
            }
        }
    });
    
    var mbDataSource = new kendo.data.DataSource({
        data: [{
            "MenuId": 1,
            "DisplayText": "Home",
            "MenuOrder": 0,
            "MenuStatus": true,
            "HasKids": false,
            "ParentMenu": null
        }, {
            "MenuId": 2,
            "DisplayText": "Finance",
            "MenuOrder": 1,
            "MenuStatus": true,
            "HasKids": false,
            "ParentMenu": null
        }]
    
    });
    var parentRef = [{
        "value": 1,
        "text": "Finance"
    }, {
        "value": 2,
        "text": "Corp. Services"
    }];
    $("#menuBuilder1").kendoGrid({
        columns: [{
            field: "MenuId",
            title: "Menu",
            editable: true
        }, {
            field: "DisplayText",
            title: "Name",
            editable: true
        }, {
            field: "MenuOrder",
            title: "Order",
            editable: true
        }, {
            field: "MenuStatus",
            title: "MenuStatus",
            editable: true
        }, {
            field: "HasKids",
            title: "Depends",
            editable: true
        }, {
            field: "ParentMenu",
            title: "ParentMenu",
            values: parentRef
        }, {
            title: "Action",
            command: ["edit"]
        }],
        toolbar: ["create"],
        editable: "popup",
        schema: {
            model: mbModel
        }
    });
    
    var mbObject = new kendo.data.ObservableObject({
        data: mbDataSource,
        //parentRef:[]
    });
    
    kendo.bind($("#menuBuilder1"), mbObject);
    mbDataSource.bind("change", function (e) {
    
    });
    var grid = $("#menuBuilder1").data("kendoGrid");
    grid.bind("save", function (e) {
        var that = this;
        that.refresh();
    });
    
    grid.bind("edit", function (e) {
    
    });
    
    $.ajax({
        url: "/MenuBuilder/GetMenuWithKids",
        dataType: "json",
        type: "GET",
        success: function (ret) {
            mbObject.set("parentRef", ret);
        }
    });
    

    });

    HTML代码

    <div id="menuBuilder1" data-bind="source:data"></div>
    

    我处在一个紧急的角落,我们非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

MustafaP解决了问题1。

问题2, 我意识到我已经将模式定义放在了kendoGrid中的错误位置。我把它放在工具栏后面的底部。 它应该放在kendoGrid括号

之后
$("#menuBuilder1").kendoGrid({
    schema: {
        model: mbModel
    },
    columns: [{
        field: "MenuId",
        title: "Menu",
        editable: true