Kendo ui 在剑道UI网格中加载日期

Kendo ui 在剑道UI网格中加载日期,kendo-ui,telerik,kendo-grid,Kendo Ui,Telerik,Kendo Grid,我在剑道UI网格中设置日期字段时遇到问题,该字段采用ISO日期格式(YYYY-MM-DD) 如果我像这样初始化数据源: var gridDataSource = new kendo.data.DataSource({ data: [{ id: 1, description: 'Test 1', begin: '2012-10-01' }], schema: { model: { id: 'id',

我在剑道UI网格中设置日期字段时遇到问题,该字段采用ISO日期格式(YYYY-MM-DD)

如果我像这样初始化数据源:

var gridDataSource = new kendo.data.DataSource({
    data: [{
        id: 1, description: 'Test 1', begin: '2012-10-01'
    }],
    schema: {
        model: {
            id: 'id',
            fields: {
                id: { type: 'number' },
                description: { type: 'string' },
                begin: { type: 'date' }
            }
        }
    }
});
gridDataSource.data([{
    id: 2, description: 'Test 2', begin: '2012-10-01'
}]);
然后正确显示日期:

但如果我使用数据源的
data()
函数设置它,如下所示:

var gridDataSource = new kendo.data.DataSource({
    data: [{
        id: 1, description: 'Test 1', begin: '2012-10-01'
    }],
    schema: {
        model: {
            id: 'id',
            fields: {
                id: { type: 'number' },
                description: { type: 'string' },
                begin: { type: 'date' }
            }
        }
    }
});
gridDataSource.data([{
    id: 2, description: 'Test 2', begin: '2012-10-01'
}]);
则日期显示不正确,且内联编辑器工作不正常:

下面是解决这个问题的方法


我做错什么了吗?

请尝试下面的代码片段。请检查第列中的格式

<script type="text/javascript">
        $(document).ready(function () {
            var gridDataSource = new kendo.data.DataSource({
                data: [{
                    id: 1, description: 'Test 1', begin: '2012-10-01'
                }],
                schema: {
                    model: {
                        id: 'id',
                        fields: {
                            id: { type: 'number' },
                            description: { type: 'string' },
                            begin: { type: 'date' }
                        }
                    }
                }
            });

            $('#grid').kendoGrid({
                dataSource: gridDataSource,
                scrollable: true,
                sortable: true,
                toolbar: ['create'],
                columns: [
            { field: 'id', title: 'ID', width: 'auto' },
            { field: 'description', title: 'Description', width: 'auto' },
            { field: 'begin', title: 'Begin', width: 'auto', format: "{0:yyyy-MM-dd}" },
            { command: ['edit', 'destroy'], title: '&nbsp;', width: '172px' }
        ],
                editable: {
                    mode: 'inline',
                    confirmation: false
                }
            });

            $('#dataButton').click(function () {
                gridDataSource.data([{
                    id: 2, description: 'Test 2', begin: '2012-10-02'
                }]);
            });
        });

    </script>

$(文档).ready(函数(){
var gridDataSource=new kendo.data.DataSource({
数据:[{
id:1,描述:“测试1”,开始:“2012-10-01”
}],
模式:{
型号:{
id:'id',
字段:{
id:{type:'number'},
描述:{type:'string'},
开始:{type:'date'}
}
}
}
});
$(“#网格”).kendoGrid({
数据源:gridDataSource,
可滚动:对,
可排序:是的,
工具栏:[“创建”],
栏目:[
{字段:'id',标题:'id',宽度:'auto'},
{字段:'description',标题:'description',宽度:'auto'},
{字段:'begin',标题:'begin',宽度:'auto',格式:“{0:yyyy-MM-dd}”},
{命令:['edit','destroy'],标题:'',宽度:'172px'}
],
可编辑:{
模式:“内联”,
确认:错误
}
});
$(“#数据按钮”)。单击(函数(){
gridDataSource.data([{
id:2,描述:“测试2”,开始:“2012-10-02”
}]);
});
});

如果将区域性剑道文化(“en-GB”)设置为所需的区域性,这将允许您以指定的任何(区域性)格式显示剑道日期。然后可以使用kendo.parseDate(变量“yyyy/MM/dd”);在发送日期服务器端之前(必须为每个值执行此操作)。请看“yyyy/MM/dd”的大小写(上下)参见链接

谢谢,但这不是我想要的。我希望日期以本地格式显示,而不是ISO日期格式。我只想在数据中使用ISO格式,这样它就不依赖于本地日期格式。也许我想要的是不可能的:-d对于使用JS,您必须获得客户端机器的时区/文化。基于此,您可以在kendo.culture()中设置文化。我已经在这样做了。我的演示使用标准的“en-US”文化。如果我用
kendo.culture('de-de')更改区域性,列格式为
“{0:d}”
,因此它是根据文化显示的,我仍然有相同的问题,我将尝试解决您的问题。一旦我得到解决方案,我会给你回复。我将在应用程序中设置区域性“de de”。然后我会尽力解决你的问题。谢谢。这是我考虑过的一种解决方法,但如果我最终能这样做,我希望避免为每个网格编写特殊代码,即使我看到的行为在我看来是错误的