2

我以前使用过Kendo-UI v2012.2.710- 但是当我更新到Kendo-UI v2012.3.1114我的代码时停止工作。我不太确定发生了什么变化,因为我的代码看起来很简单。任何人都可以对此有所了解吗?

回滚到以前的版本以保持此功能正常工作不是一种选择,因为它可能会破坏其他功能。

<div id="gridTiming"></div>

<script>
    var entries = [
        { "city":"Boston", "time":"10:14", datetime: "2012-08-28T10:14:00.000Z" },
        { "city":"Kyoto", "time":"23:14", datetime: "2012-08-28T23:14:00.000Z"},
        { "city":"La Paz", "time":"10:14", datetime: "2012-08-28T10:14:00.000Z"},
        { "city":"San Francisco", "time":"07:14", datetime: "2012-08-28T07:14:00.000Z"},
        { "city":"Salt Lake City", "time":"08:14", datetime: "2012-08-28T08:14:00.000Z"},
        { "city":"Salvador", "time":"11:14", datetime: "2012-08-28T11:14:00.000Z"},
        { "city":"Salzburg", "time":"16:14", datetime: "2012-08-28T16:14:00.000Z" },
        { "city":"San Diego", "time":"07:14", datetime: "2012-08-28T07:14:00.000Z" }
    ];

    function timeEditor(container, options) {
        $('<input data-text-field="' + options.field + '" data-value-field="' + 
                  options.field + '" data-bind="value:' + options.field + 
                  '" data-format="' + options.format + '"/>')
        .appendTo(container)
        .kendoTimePicker({});
    }

    function dateTimeEditor(container, options) {
        console.log("options", options);
        $('<input data-text-field="' + options.field + '" data-value-field="' + 
                  options.field + '" data-bind="value:' + options.field + 
                  '" data-format="' + options.format + '"/>')
        .appendTo(container)
        .kendoDateTimePicker({});
    }

    $("#gridTiming").kendoGrid({
        dataSource: {
            data: entries,
            schema: {
                parse: function (response) {
                    $.each(response, function (idx, elem) {
                        if (elem.time && typeof elem.time === "string") {
                            elem.time = kendo.parseDate(elem.time, "HH:mm");
                        }
                        if (elem.datetime && typeof elem.datetime === "string") {
                            elem.datetime = kendo.parseDate(elem.datetime, "yyyy-MM-ddTHH:mm:ss.fffZ");
                        }
                    });
                    return response;
                }
            }
        },
        columns: [
            { command: [ "edit" ] },
            { field:"city", title:"City" },
            { field:"time", title:"Time", format:"{0:HH:mm}", editor: timeEditor },
            { field:"datetime", title:"Date - Time", format:"{0:yyyy-MM-dd HH:mm}", editor: dateTimeEditor }
        ],
        editable: "inline",
        navigatable: true
    });
</script>

编辑:以下一对 jsFiddles 演示了该问题:

要查看问题,请执行以下操作:

  1. 单击一行上的“编辑”
  2. 更改任何项目。
  3. 点击“更新”

Troy Alford:两个版本都更新了底层网格的数据 - 但只有v2012.2.710版本正确关闭了对话框并将网格的单元格标记为已更改。

4

2 回答 2

3

我已经创建了 2 个 jsFiddles 来测试您的问题- 但是这两个版本都Kendo-UI对我有用,而不会更改您的代码

编辑:将@Emiliano Bartolome 提供的更新版本添加到OP。这些链接是:

我应该注意到这些 jsFiddles 依赖于Kendo-UICDN 并jQuery 1.8.2通过 CDN。我正在使用的链接是:

于 2012-12-05T21:34:26.777 回答
1

谜团已揭开!对于新版本,我们必须idschema.model.

我已经使用 Kendo-UI v2012.3.1114 更新了版本 2

我在模型中所做的设置idcity,现在它可以工作了!

model:{
    id:"city"
},
于 2012-12-05T23:50:29.527 回答