我有一个带有几个绑定列的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
感谢任何帮助!
答案 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"))
)
)