在Spark DataGrid中显示日期

时间:2011-05-20 10:38:37

标签: flash flex actionscript flash-builder

我有一个Datagrid,它从模型“beans”的ArrayCollection中获取数据。 ArrayCollection 结果结果

的列表
  <s:DataGrid  dataProvider="{outcomes}">
    <s:columns>
        <s:ArrayList>
            <s:GridColumn dataField="outcome" headerText="Outcome" width="120"/>
            <s:GridColumn dataField="dateRequired" headerText="Date Req" width="130"/>
        </s:ArrayList>
    </s:columns>
  </s:DataGrid>

Outcome.as

[Bindable]
public class ASPersonalOutcomeSummary  {

    public var _outcome:String;
    public var _dateRequired:Number;
}

问题是 dateRequired 表示为数字,这个设计决策是为了让它更容易在AS客户端和Java后端之间传递。

我真的想将此数字显示为日期字符串(例如2011年2月1日或类似的东西),但因为它是一个数字,它只是显示为数据网格中的时间戳...例如。

结果|需要日期


blahhhhhh | 12389712987

blahhhhh2 | 13242342349

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

使用labelFunction,如下所示:

private function dateLabelFunction(item: ASPersonalOutcomeSummary, column:GridColumn):String
{
    var timeStamp:Number = item. _dateRequired;
    var date:Date = new Date(timeStamp);
    return new DateFormatter().format(date);
}

然后:

<s:DataGrid  dataProvider="{outcomes}">
    <s:columns>
        <s:ArrayList>
            <s:GridColumn dataField="outcome" headerText="Outcome" width="120"/>
            <s:GridColumn labelFunction="dateLabelFunction" headerText="Date Req" width="130"/>
        </s:ArrayList>
    </s:columns>
  </s:DataGrid>

答案 1 :(得分:2)

您可以在labelFunction中执行新的Date(_dataRequired),然后使用dateformatter对其进行格式化。

干杯