使用 columns.Bound 将字符串 ('yyyyMMddHHmmss') 转换为 Kendogrid 的日期格式

String ('yyyyMMddHHmmss') to date format with Kendogrid using columns.Bound

我从后端收到格式为 "yyyyMMddHHmmss" 的字符串。当它显示在 kendo 网格中时,我需要它具有 "MM/dd/yyyy HH:mm:ss".

的格式

我在 MVC 模型中工作,并试图在我们从后端获取日期时更改日期,但是当我们 运行 更新时,更新的行格式错误。

我试过了:

 columns.Bound(p => p.UploadDate).Format("{0:yyyyMMddHHmmss}");

不格式化日期。

我也尝试了以下变体

columns.Bound(p => p.UploadDate).ClientTemplate("#=UploadDate ? kendo.toString(kendo.parseDate(UploadDate,yyyyMMddHHmmss), 'MM/dd/yyyy HH:mm:ss')#");

columns.Bound(p => p.UploadDate).ClientTemplate("#=kendo.toString(kendo.parseDate(UploadDate), 'MM/dd/yyyy HH:mm:ss')#");

两者都会在页面上造成 "Invalid template" 错误。

只有当 UploadDate 是您模型上的 DateTime 对象时,.Format() 函数才会起作用:

columns.Bound(p => p.UploadDate).Format("{0:yyyyMMddHHmmss}");

您的第一个 ClientTemplate 示例失败,因为您使用的是内联 shorthand if 语句,但缺少错误部分“:”(请参阅​​下面的客户端模板解决方案)。

我认为您的第二个 ClientTemplate 示例失败了,因为 "yyyyMMddHHmmss" 不是标准日期格式,因此 kendo.dateParse() 函数失败。

如果无法将字段转换为模型中的 DateTime,则必须使用 ClientTemplate。试试这个:

columns.Bound(p => p.UploadDate)
       .ClientTemplate("#= UploadDate 
                       ? kendo.toString(kendo.parseDate(UploadDate, 'yyyyMMddHHmmss'), 'MM/dd/yyyy HH:mm:ss') 
                       : '' #");

参考文献: