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();
}