Jquery 剑道UI网格版本“;v2012.3.1114”;不';t支持日期/时间编辑功能

Jquery 剑道UI网格版本“;v2012.3.1114”;不';t支持日期/时间编辑功能,jquery,datetime,kendo-ui,Jquery,Datetime,Kendo Ui,我以前使用的是Kendo UI v2012.2.710——但当我更新到Kendo UI v2012.3.1114时,我的代码停止工作。我不太确定是什么改变了,因为我的代码看起来很简单。有人能解释一下吗 为了保持此功能正常工作而回滚到以前的版本不是一个选项,因为它可能会破坏其他功能 <div id="gridTiming"></div> <script> var entries = [ { "city":"Boston", "time"

我以前使用的是
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>

变量项=[
{“城市”:“波士顿”,“时间”:“10:14”,日期时间:“2012-08-28810:14:00.000Z”},
{“城市”:“京都”,“时间”:“23:14”,日期时间:“2012-08-28223:14:00.000Z”},
{“城市”:“拉巴斯”,“时间”:“10:14”,日期时间:“2012-08-28 10:14:00.000Z”},
{“城市”:“旧金山”,“时间”:“07:14”,日期时间:“2012-08-28T07:14:00.000Z”},
{“城市”:“盐湖城”,“时间”:“08:14”,日期时间:“2012-08-28 08:14:00.000Z”},
{“城市”:“萨尔瓦多”,“时间”:“11:14”,日期时间:“2012-08-28811:14:00.000Z”},
{“城市”:“萨尔茨堡”,“时间”:“16:14”,日期时间:“2012-08-28:16:14:00.000Z”},
{“城市”:“圣地亚哥”,“时间”:“07:14”,日期时间:“2012-08-28T07:14:00.000Z”}
];
函数时间编辑器(容器、选项){
$('')
.appendTo(容器)
.kendoTimePicker({});
}
函数dateTimeEditor(容器、选项){
日志(“选项”,选项);
$('')
.appendTo(容器)
.kendoDateTimePicker({});
}
$(“#网格计时”).kendoGrid({
数据源:{
数据:条目,
模式:{
解析:函数(响应){
$.each(响应、函数(idx、元素){
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”);
}
});
返回响应;
}
}
},
栏目:[
{命令:[“编辑”]},
{字段:“城市”,标题:“城市”},
{字段:“时间”,标题:“时间”,格式:{0:HH:mm},编辑器:timeEditor},
{字段:“日期时间”,标题:“日期-时间”,格式:“{0:yyyy-MM-dd HH:MM}”,编辑器:dateTimeEditor}
],
可编辑:“内联”,
可导航:正确
});
EDIT:以下一对JSFIDLE演示了问题:

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

  • 单击行上的“编辑”
  • 更改任何项目
  • 单击“更新”

  • :两个版本都会更新基础网格的数据-但只有
    v2012.2.710
    版本会正确关闭对话框,并将网格的单元格标记为已更改。

    我已创建了2个JSFIDLE用于测试您的问题-但是
    剑道UI
    的两个版本都适用于我,不会更改您的代码

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

    我应该注意到,这些jsfiddle依赖于
    kendoui
    CDN和通过CDN的
    jquery1.8.2
    。我使用的链接有:

    • 剑道UI v2012.2.710:
    • 剑道UI v2012.3.1114:
    • jQuery 1.8.2

    我已经创建了2个JSFIDLE来测试您的问题,但是
    剑道UI的两个版本都可以在不修改代码的情况下为我工作

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

    我应该注意到,这些jsfiddle依赖于
    kendoui
    CDN和通过CDN的
    jquery1.8.2
    。我使用的链接有:

    • 剑道UI v2012.2.710
  • 剑道UI v2012.3.1114:
  • jQuery 1.8.2

  • 谜团解开了!对于新版本,我们必须在
    schema.model
    中定义
    id

    我已经更新了

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

    model:{
        id:"city"
    },
    

    谜团解开了!对于新版本,我们必须在
    schema.model
    中定义
    id

    我已经更新了

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

    model:{
        id:"city"
    },
    

    我更新了您的一些问题,以帮助您获得更多的关注,并使代码更具可读性。什么停止了工作?控制台中是否存在javascript错误?提供有关该问题的更多信息。我更新了您的一些问题,以帮助您获得更多的关注,并使代码更具可读性。什么停止了工作?控制台中是否存在javascript错误?提供更多关于这个问题的信息。我已经更新了你小提琴中的代码,以实际显示“问题”。如果在剑道2012.2.710中按
    edit
    并按
    update
    ,则
    弹出窗口将关闭,而在剑道2012.3.1114中保持打开状态。事实上,在这两种情况下,值都会更新,但存在不同的行为。这是一个“错误”还是“功能”?很好-用小提琴更新OP的帖子,以澄清。是的,@EmilianoBartolome我也有同样的问题,即使我不能在更新功能上做任何操作。我已经发布了一个不同的解决方案。检查它是否适用于您,如果适用,请接受它作为答案。我已更新了您小提琴中的代码,以实际显示“问题”。如果在剑道2012.2.710中按
    edit
    并按
    update
    ,则
    弹出窗口将关闭,而在剑道2012.3.1114中保持打开状态。事实是