Telerik Kendo Grid DateTime列始终为空

时间:2015-03-31 14:21:02

标签: c# kendo-ui telerik kendo-grid kendo-asp.net-mvc

我有一个带有几个绑定列的Telerik Kendo Grid。所有列都按预期工作,但此DateTime列 tsCreated 始终为null

模特:

    [DataType(DataType.Date)]
    public DateTime tsCreated { get; set; }

网格:

@(Html.Kendo().Grid<NNC.ViewModels.OrderViewModel>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.tsCreated);
            columns.Bound(c => c.orderNr);
            columns.Bound(c => c.customerName);
            columns.Bound(c => c.description);                
        })
        .Groupable()
        .Filterable()
        .Sortable()
        .Pageable()
        .DataSource(dataSource => dataSource
            .Ajax()
            .Events(events => events.Error("kendoGrid_ErrorHandler"))
            .Model(model => model.Id("orderNr"))
            .Read(read => read.Action("EditingInline_Read", "Orders"))                
        )
)

JSON数据确实以 tsCreated

显示日期
{
 "Data":[{"orderNr":"13011155","tsCreated":"\/Date(1423579599377)\/",
 "description":"xxxx","customerName":"xxxxx"}],"Total":1,
 "AggregateResults":null,"Errors":null
 }

我还创建了一个ClientTemplate来显示值,如下所示:

columns.Bound(c => c.tsCreated).ClientTemplate(
                "W= #= tsCreated #"
            );

但它显示:

W= null

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

如果您正在使用Globalize.js,则会出现问题。 Kendo UI与Globalize的日期函数冲突,因此目前解决方法是在Kendo UI相关脚本之后加载Globalize.js

以下是关于Telerik论坛的相关讨论(见http://www.telerik.com/forums/registering-globalize-js-before-kendo-culture-js-causes-datetime-columns-in-grids-to-fail-formatting):

  

基本上,当您加载globalize库时,kendo.parseDate会启动   使用Globalize.parseDate方法代替我们自己的实现   kendo.parseNumber。由于globalize解析器无法解析   MVC成功返回日期的格式。

     

e.g。

     

Globalize.parseDate(&#34; /日期(-47876400000)/&#34)

     

在Kendo脚本不会覆盖后加载globalize库   我们的实现和Grid将成功解析它。

     

我担心这种情况没有其他解决办法。

答案 1 :(得分:0)

也许UNIX时代的日期转换失败了?可以尝试使用Kendo UI日期转换。

@(Html.Kendo().Grid<NNC.ViewModels.OrderViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.tsCreated).ClientTemplate("W= #= kendo.toString(tsCreated , "m") #");
        columns.Bound(c => c.orderNr);
        columns.Bound(c => c.customerName);
        columns.Bound(c => c.description);                
    })
    .Groupable()
    .Filterable()
    .Sortable()
    .Pageable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Events(events => events.Error("kendoGrid_ErrorHandler"))
        .Model(model => model.Id("orderNr"))
        .Read(read => read.Action("EditingInline_Read", "Orders"))                
        )
)