Kendo UI网格版“v2012.3.1114”不支持日期/时间编辑功能

时间:2012-12-05 20:48:21

标签: jquery datetime kendo-ui

我之前使用的是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. 点击“更新”
  4. Troy Alford:两个版本都更新了底层网格的数据 - 但只有v2012.2.710版本正确关闭了Dialog,并将Grid的单元格标记为已更改。

2 个答案:

答案 0 :(得分:3)

我已经创建了2个jsFiddles用于测试你的问题 - 但是Kendo-UI的两个版本都适用于我而不会改变你的代码

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

我应该注意,这些jsFiddles依赖于Kendo-UI CDN和jQuery 1.8.2来自CDN。我正在使用的链接是:

答案 1 :(得分:1)

神秘解决了!使用新版本时,我们必须在id中定义schema.model

我已更新Version 2, using Kendo-UI v2012.3.1114

我在模型中所做的是将id设置为city,现在就可以了!

model:{
    id:"city"
},