格式化KendoUI Grid中的日期字段作为对象

时间:2014-03-08 16:00:53

标签: kendo-grid symfony-2.3

我正在尝试格式化KendoUI Grid中的日期字段,其中字段作为对象出现:

"callStart":{"date":"2014-01-24 12:04:36","timezone_type":3,"timezone":"Europe\/Berlin"}

我试过了:

{ field: "callStart", title: "Fecha", width: "100px", format: "{0:yyyy-MM-dd}" }

但仍显示:

[object Object]

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

不知道你是否已经解决了,但我反正迟到了。它之所以不起作用,是因为您可能试图将整个对象callStart绑定到字段列中。该字段只需要一个日期对象,但您给它一个。

此外,您的对象似乎仍然是JSON字符串格式,您需要解析该对象作为第一步(如果它真的只是原始JSON)。然后下一步,您可以:

  1. 在列本身上解析callStart(使用kendo模板)
  2. 通过其架构
  3. 解析数据源本身的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:通过dataSource模式解析对象

     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日期或kendo Date对象。优点是您可以控制该列的确切类型,并使过滤/排序更容易。

    您可能需要做一些调整才能获得所需的输出,但这些是您需要选择的一般选项。