Data Grid editável Flex 3 [RESOLVIDO]

Dae galera!
Tenho um grid editável que quando eu altero uma coluna chamada de quantidade eu quero que ele atualize o preço em outra coluna, fazendo uma multiplicação, quando eu edito a quantidade.
Ou seja, atualize uma coluna ou mais quando eu edito outra.

Muito procurando já consegui tornar as colunas editáveis e capturar os valores e o evento de quando eu edito no grid. Consegui também multiplicar os valores e jogar para o array ou dataProvider do grid. O meu problema é na hora de atualizar os valores modificados!

Após modificar o ArrayCollection do grid faço o seguinte comando…

Ele atualiza legal o problema é que quando atualiza ele perde o index do grid e é alterado outra linha do grid com o mesmo valor que eu digitei! Não sei mais o que fazer! alguém pode me dar uma luz ou se tem algum exemplo usando a mesma ideia minha?

o meu .mxml

<mx:DataGrid itemEditEnd="disableEditing(event);" dataProvider="{aSimulacao}" editable="true" dragDrop="dragDropHandler(event)" dropEnabled="true" id="DgSimulacoes" verticalScrollPolicy="on" horizontalScrollPolicy="on" left="10" top="66" bottom="10" right="10">
				<mx:columns>
					<componentes:StylizedDataGridColumn headerText="Grupo" dataField="ds_grupomat" width="120" textAlign="left" stylesFunction="changeStyles" /> 
					<mx:DataGridColumn headerText="Código" dataField="cd_tipoexame" width="60" editable="false"/>
					<mx:DataGridColumn headerText="Exame" dataField="ds_tipoexame" width="350" editable="false"/>
					<mx:DataGridColumn headerText="Curva" dataField="tp_curvaabc" width="60" editable="false"/>
					<mx:DataGridColumn headerText="Qtde" dataField="qt_produto" width="80" editable="true"/>
					<mx:DataGridColumn headerText="Preço Conc." dataField="vr_concorrente" width="100" editable="true"/>
					<mx:DataGridColumn headerText="Total Conc." dataField="vr_totalconc" width="100" editable="false"/>
					<mx:DataGridColumn headerText="Preco Solicitado" dataField="vr_solicitacao_web" width="100" editable="true"/>
					<mx:DataGridColumn headerText="Total" dataField="vr_totalsolic" width="80" editable="false"/>
					<mx:DataGridColumn headerText="Preço Base" dataField="vr_precobase" width="80" editable="false"/>
					<mx:DataGridColumn headerText="Preço Vigor" dataField="vr_vigor" width="80" editable="false"/>
					<mx:DataGridColumn headerText="Status" dataField="status" width="80" editable="false"/>
					<mx:DataGridColumn headerText="Rotina" dataField="ds_rotina" width="220" editable="false"/>
					<mx:DataGridColumn headerText="Desconto" dataField="pc_desconto" width="100" editable="false"/>
					<mx:DataGridColumn headerText="Ídice" dataField="cd_indice" width="80" editable="false"/>
					<mx:DataGridColumn headerText="Ri" dataField="pc_comissao" width="70" editable="false"/>					
					<mx:DataGridColumn headerText="Método" dataField="ds_metodo" width="170" editable="false"/>
					<mx:DataGridColumn headerText="Preço Base" dataField="vr_precobase" width="170" editable="false"/>
					<mx:DataGridColumn headerText="Prazo de Entrega" dataField="nr_diasentrega" width="120" editable="false"/>
					
				</mx:columns>
			</mx:DataGrid>

e o .as

private function disableEditing(event:DataGridEvent):void {
	if (event.reason == "newRow"){
		var simu:Simulacao = new Simulacao();
		if (event.dataField == "qt_produto"){
			var newData:String = TextInput(event.currentTarget.itemEditorInstance).text;
			var iQtPro:int = parseInt(newData);
			var iRowIndex:int = event.rowIndex;
			simu = DgSimulacoes.dataProvider[iRowIndex];
			simu.qt_produto = iQtPro;
			event.preventDefault();
			calcTotaisGrid(simu.id_simulacao_demanda, iRowIndex, simu.qt_produto, simu.vr_solicitacao_web, simu.vr_concorrente);
		}	
	}
	//saveCookie(iQtPro);
}

private function calcTotaisGrid(idSimulacaoDemanda:int, indexRow:int, qtProduto:int, vrSolicitacao:Number, vrConcorrente:Number):void{
	DgSimulacoes.dataProvider[indexRow].vr_totalconc = vrConcorrente * qtProduto;
	DgSimulacoes.dataProvider[indexRow].vr_totalsolic = vrSolicitacao * qtProduto;
	DgSimulacoes.invalidateList();
	DgSimulacoes.dataProvider.refresh();
}

Lucas,
Tente ArrayCollection.itemUpdated acho q lhe será útil.

[]s

[quote=fabiophx]Lucas,
Tente ArrayCollection.itemUpdated acho q lhe será útil.

[]s[/quote]

Valew Fábio!
Funcionou!
porém teve algumas alterações do que eu estava fazendo.
Para agregar conhecimento… o código ficou dessa forma:

private function disableEditing(event:DataGridEvent):void {
	if (event.reason == "newRow"){
		var simu:Object = new Object();
		if (event.dataField == "qt_produto"){
			var newData:String = TextInput(event.currentTarget.itemEditorInstance).text;  
            var iQtPro:int = parseInt(newData);
			var iRowIndex:int = event.rowIndex;
			simu = DgSimulacoes.dataProvider[iRowIndex];
			calcTotaisGrid(simu.id_simulacao_demanda, iRowIndex, iQtPro, simu.vr_solicitacao_web, simu.vr_concorrente, simu);
		}
	}
}

private function calcTotaisGrid(idSimulacaoDemanda:int, indexRow:int, qtProduto:int, vrSolicitacao:Number, vrConcorrente:Number, dgObject:Object):void{
	var nVrTotConc:Number = (vrConcorrente * qtProduto);
	var nVrTotSolic:Number = (vrSolicitacao * qtProduto);
	
	dgObject.vr_totalconc = nVrTotConc;
	dgObject.vr_totalsolic = nVrTotSolic; 
	dgObject.fg_salvo = '*'
	aSimulacao.itemUpdated(dgObject);
	
	saveCookie(aSimulacao);
}

Muito Obrigado novamente!