Apache flex 如何将currencyformatter放入flex datagrid列中?

Apache flex 如何将currencyformatter放入flex datagrid列中?,apache-flex,flash,datagrid,adobe,format,Apache Flex,Flash,Datagrid,Adobe,Format,我需要使用货币格式化程序格式化列。我知道如何进行货币格式化,我只需要一个如何将其实现到datagrid列中的示例。无需使用项目渲染器。只需使用labelFunction。例如: 数据网格列: <mx:DataGridColumn headerText="Total Cost" dataField="TotalCost" labelFunction="LabelFormatter"/> protected function LabelFormatter(item:Object, co

我需要使用货币格式化程序格式化列。我知道如何进行货币格式化,我只需要一个如何将其实现到datagrid列中的示例。

无需使用
项目渲染器。只需使用
labelFunction
。例如:

数据网格列:

<mx:DataGridColumn headerText="Total Cost" dataField="TotalCost" labelFunction="LabelFormatter"/>
protected function LabelFormatter(item:Object, column:DataGridColumn):String
{
  var returnLabel:String = "";
  var header:String = column.headerText;

  switch (header)
  {                 
    case "Total Cost":
      returnLabel = currencyFormat.format(item.TotalCost.toString());
      break;
  }

  return returnLabel;
}
<mx:CurrencyFormatter id="currencyFormat" precision="2" />
货币格式化程序:

<mx:DataGridColumn headerText="Total Cost" dataField="TotalCost" labelFunction="LabelFormatter"/>
protected function LabelFormatter(item:Object, column:DataGridColumn):String
{
  var returnLabel:String = "";
  var header:String = column.headerText;

  switch (header)
  {                 
    case "Total Cost":
      returnLabel = currencyFormat.format(item.TotalCost.toString());
      break;
  }

  return returnLabel;
}
<mx:CurrencyFormatter id="currencyFormat" precision="2" />

或:


基于ActionScript的答案,无需定义其他功能:

var currencyFormatter:CurrencyFormatter = new CurrencyFormatter();
var gridCol:GridColumn = new GridColumn("My Money");
gridCol.dataField = "amount";
gridCol.formatter = currencyFormatter;

从中,labelFunction属性可用于执行更复杂的任务,例如将数据提供程序中的两个字段合并到一列中。但是对于格式化货币值这样的简单任务,上面的代码就足够了。

似乎不需要switch语句。LabelFormatter()仅应用于datagrid的单个列。每次调用时,column.headerText等于“总成本”。@Eric在本例中,您完全正确。在我的生产应用程序中,我使用了相同的函数来重新格式化多个列的标签,这就是switch语句出现在其中的原因。为了清晰和简洁,我删除了其他列。