Bom dia a Todos, Actualmente estou a desenvolver uma aplicação em Flex, cuja a mesma têm uma DataGrid editavel onde tenho campos numéricos e estou a usar a labelfunction para formatar estes campos, o meu problema é que cada vez que o cursor passa por este campo o mesmo ganha não sei quantos 000000. Depois de algumas horas na web, encontrei um artigo sobre este assunto no forum da adobe, que depois das alterações sugeridas fiquei com um novo problema que é que quando o valor do campo é 0 ele não altera o valor. http://forums.adobe.com/thread/431165
Necessito da vossa ajuda por favor. Código do mxml em anexo Marco -- Recebeu esta mensagem porque está inscrito no grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" dos Grupos do Google. Para ver este debate na Web, visite https://groups.google.com/d/msg/riapt/-/_cL6ihZK6PoJ. Para publicar uma mensagem neste grupo, envie um e-mail para [email protected]. Para anular a inscrição neste grupo, envie um e-mail para [email protected]. Para ver mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT.
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" backgroundColor="white"> <mx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.DataGridEventReason; import mx.controls.TextInput; import mx.controls.dataGridClasses.DataGridColumn; import mx.formatters.NumberFormatter; import mx.events.DataGridEvent; import mx.collections.ArrayCollection; [Bindable] private var collection:ArrayCollection = new ArrayCollection([ {code:1, description:"Item 1", value:45.89}, {code:2, description:"Item 2", value:0}, {code:3, description:"Item 3", value:0}, {code:4, description:"Item 4", value:0}, {code:5, description:"Item 5", value:0}, {code:6, description:"Item 6", value:0}, {code:7, description:"Item 7", value:0} ]); private var formatter:NumberFormatter; private function formatterFunction(item:Object, column:DataGridColumn):String { if (formatter == null){ formatter = new NumberFormatter(); formatter.decimalSeparatorTo = ","; formatter.thousandsSeparatorTo = "."; formatter.decimalSeparatorFrom = ","; formatter.thousandsSeparatorFrom = "."; formatter.useThousandsSeparator = true; formatter.precision = 2; } return formatter.format(item[column.dataField]); } private function editEndHandler(event:DataGridEvent):void { var myEditor:TextInput = TextInput(event.currentTarget.itemEditorInstance); var newVal:Number = isNaN(Number(myEditor.text)) ? myEditor.text as Number : 0.0000; var oldVal:Number = Number(event.currentTarget.editedItemRenderer.data[event.dataField]); if (event.reason == DataGridEventReason.CANCELLED || event.reason == DataGridEventReason.OTHER || oldVal == newVal) { event.preventDefault(); dg.destroyItemEditor(); return; } } ]]> </mx:Script> <mx:Label text="Bug datagrid editavel com labelFunction" fontSize="16" fontWeight="bold" /> <mx:DataGrid dataProvider="{collection}" editable="true" itemEditEnd="editEndHandler(event)" id="dg"> <mx:columns> <mx:DataGridColumn headerText="Código" dataField="code" editable="false"/> <mx:DataGridColumn headerText="Descrição" dataField="description" editable="true"/> <mx:DataGridColumn headerText="Valor" width="300" dataField="value" labelFunction="formatterFunction" editable="true" textAlign="right"/> </mx:columns> </mx:DataGrid> </mx:Application>
