【问题标题】:How can I put a currencyformatter in a flex datagrid column?如何将货币格式化程序放在 flex 数据网格列中?
【发布时间】:2011-01-26 14:57:21
【问题描述】:

我需要使用货币格式化程序来格式化该列。我知道如何进行货币格式化我只需要一个关于如何将它实现到数据网格列中的示例。

【问题讨论】:

    标签: apache-flex flash datagrid adobe format


    【解决方案1】:

    无需使用itemRenderer。只需使用labelFunction。示例:

    DataGridColumn:

    <mx:DataGridColumn headerText="Total Cost" dataField="TotalCost" labelFunction="LabelFormatter"/>
    

    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" />
    

    【讨论】:

    • 似乎不需要switch语句。 LabelFormatter() 仅适用于数据网格的单个列。每次调用,column.headerText 都等于“Total Cost”。
    • @Eric 在这种情况下你是绝对正确的。我曾使用相同的函数重新格式化生产应用程序中几列的标签,这就是 switch 语句存在的原因。为了清楚和简洁起见,我删除了其他列。
    【解决方案2】:

    或者:

    private function formatarValor(item:Object, coluna:DataGridColumn):String{
        return realFormatter.format(item[coluna.dataField]);
    }
    

    【讨论】:

      【解决方案3】:

      不需要定义附加函数的基于 ActionScript 的答案:

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

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

      【讨论】:

        猜你喜欢
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2016-05-03
        • 1970-01-01
        • 2016-10-29
        相关资源
        最近更新 更多