Como formatar um datafield moeda em Flex
-
05-07-2019 - |
Pergunta
Eu tenho um arquivo xml fornecendo dados para um datagrid no Flex 2, que inclui um campo de preço não formatado (ou seja: é apenas um número). Alguém pode me dizer como eu tomar essa datafield e formatá-lo - adicionar um símbolo de moeda, colocou em milhares separadores etc. Obrigado. S.
Solução
Como dito acima uma maneira fácil de fazer isso seria para adicionar um labelFunction para a coluna especificada e formatar os dados dentro lá.
Muitas vezes eu achar que é muito mais fácil trabalhar com objetos XML depois direto para que normalmente se eu estou recebendo XML a partir de uma função que eu iria criar um objeto e analisador para que XML e você pode formatar os dados dentro do analisador também se você gosta .
Outra maneira de lidar com isso seria dentro de um itemRenderer. Exemplo:
<mx:DataGridColumn id="dgc" headerText="Money" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalAlign="right">
<mx:CurrencyFormatter id="cFormat" precision="2" currencySymbol="$" useThousandsSeparator="true"/>
<mx:Label id="lbl" text="{cFormat.format(data)}" />
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
Outras dicas
Muito obrigado por suas respostas ... eles ajudaram muito.
No final, eu fui para uma solução que envolvesse os três elementos seguintes:
<mx:DataGridColumn headerText="Price" textAlign="right" labelFunction="formatCcy" width="60"/>
public function formatCcy(item:Object, column:DataGridColumn):String
{
return euroPrice.format(item.price);
}
<mx:CurrencyFormatter id="euroPrice" precision="0"
rounding="none"
decimalSeparatorTo="."
thousandsSeparatorTo=","
useThousandsSeparator="true"
useNegativeSign="true"
currencySymbol="€"
alignSymbol="left"/>
Eu não sei se esta é a solução correta, mas parece trabalho (no momento), Obrigado novamente, S ...
Como sobre a classe CurrencyFormatter
Veja aqui para docs de Flex 2. é muito fácil de usar.
Você pode usar um destes em um labelFunction em uma coluna DataGrid para formatar seus números.