我正在尝试在KendoUI网格中格式化一个日期字段,该字段将作为对象出现:
"callStart":{"date":"2014-01-24 12:04:36","timezone_type":3,"timezone":"Europe/Berlin"}
I have try:
{ field: "callStart", title: "Fecha", width: "100px", format: "{0:yyyy-MM-dd}" }
但仍显示:
[object Object]
任何想法?
谢谢!
不知道你是否已经解决了,但我还是会晚一点回答。它不工作的原因是因为您可能试图将整个对象callStart
绑定到字段列中。这个字段只需要一个日期对象,但是你没有给它一个。
此外,您的对象似乎仍然是JSON字符串格式,您需要解析对象作为第一步(如果它真的只是原始JSON)。然后下一步,你可以:
- 在列本身上解析
callStart
(使用kendo模板) - 通过schema 在数据源本身上解析
callStart
选项1:使用模板解析列字段本身
{
field: "callStart",
title: "Fecha",
width: "100px",
template: "#= kendo.toString(kendo.parseDate(callStart.date, 'yyyy-MM-dd HH:mm:ss'), 'MM/dd/yyyy') #"
}
此选项的优点是数据源对象仍然保持其原始形式,但是过滤和排序可能会变得有点棘手。
选项2:通过数据源模式解析对象
var gridDS = new kendo.data.DataSource({
data: result,
schema: {
parse: function (result) {
for (var i = 0; i < result.length; i++) {
var resultItem = result[i];
resultItem.callStart = kendo.parseDate(result[i].callStart.date, 'yyyy-MM-dd HH:mm:ss');
}
return result;
}
},
//etc...
});
每个数据源对象都经过解析函数,你可以做任何你需要做的处理,把它变成一个JS date或kendo date对象。这样做的好处是,您可以控制该列的确切类型,并使过滤/排序更容易。
您可能需要做一些调整来获得您想要的输出,但这些是您需要从中选择的一般选项。