【问题标题】:Kendo Grid DropdownList And Insert template Error剑道网格下拉列表和插入模板错误
【发布时间】:2014-01-27 16:34:02
【问题描述】:

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

问题

  1. 当我通过在下拉列表中选择一个值来编辑记录时, 字段未更新。
  2. 当我从工具栏中选择添加命令时,一个不同的 模板尝试渲染并引发错误“Uncaught ReferenceError: 在 Chrome 调试中未定义 ParentMenu"。因此没有任何反应。

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

我已经证明了我在这里遇到的错误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>

我处于困境中,我们将不胜感激。

【问题讨论】:

  • 当您在 mbDataSource 中将初始值 1 或 2 作为 ParentMenu 时,更新工作正常。您可以为初始空值提供 0。但它不能正常工作(对于选择财务,您必须先选择公司服务,然后选择财务,否则网格不会注意到值发生变化)
  • 我找不到任何关于其他问题的信息。
  • 您好,感谢您的解决方法。你看过问题 #2 了吗?
  • 我看过了,chrome 调试器给出的 MenuId 没有定义。您说您使用不同的模板进行创建,但我看不到模板在哪里。
  • 我在 prblm#2 中报告的错误是在从 Visual Studio 运行并在 chrome 中调试时。我看到它已更改为 jsfiddle 中的 MenuId。但是,“添加新”弹出窗口未能出现。请协助

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


【解决方案1】:

MustafaP 解决了问题 1。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多