Pessoal, sei que esse assunto já foi muito discutido aqui, mas procurei e não achei nenhuma mensagem com uma situação parecida com a minha. Coloquei um screencast do meu problema, de modo que seja mais fácil de visualizar esse comportamento estranho:
http://screencast.com/t/orPQDa5Sm Tenho um datagrid cuja primeira coluna é a do checkbox. As duas colunas de botões são fixas e as colunas com os campos do formulário são criadas dinamicamente, pois os campos são variáveis. Tudo funciona bem, quando eu clico nos checkboxes eu consigo capturar os respectivos documentos. O problema está quando eu clico nos botões de nagevação da paginação. O datagrid simplesmente vai incrementando o índice do(s) checkbox(es) selecionado(s), à medida em que eu vou avançando nas páginas do resultado. Eu já revisei todo o meu código diversas vezes e não existe nada que pareça ser a causa desse problema. Como o arraycollection que server de dataProvider é criado dinamicamente, eu coloquei um Alert.show() dentro do if quando o valor selecionado é true. Nunca entra nesse if, mas os checkboxes continuam lá. Aqui está o código do datagrid: <mx:DataGrid id="gridResultado" height="100%" editable="true" allowMultipleSelection="true"> <mx:columns> <mx:DataGridColumn headerText="" textAlign="center" width="30" dataField="selecionado" editable="false" rendererIsEditor="false" sortable="false"> <mx:itemRenderer> <mx:Component> <mx:HBox horizontalAlign="center"> <mx:Script> <![CDATA[ //import mx.controls.Alert; import com.meyer.documentsuite.view.entity.Documento; private function docSelecionadoChange(documento:Documento):void { outerDocument.docsSelecionadosChange(documento); } ]]> </mx:Script> <mx:CheckBox id="checkGrid" click="docSelecionadoChange(data.documento)" /> </mx:HBox> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> E aqui está o conteúdo do método docsSelecionadosChange(), chamado no momento em que o checkbox é clicado. Ele basicamente insere ou remove o documento de um arrayCollection chamado docsSelecionados: public function docsSelecionadosChange(documento:Documento):void { var indice:int = listDocumentos.getItemIndex(documento); var jaFoiSelecionado:Boolean = docsSelecionados.getItemIndex(documento) >= 0 ? true : false; if(jaFoiSelecionado) { var indiceDel:int = docsSelecionados.getItemIndex(documento); docsSelecionados.removeItemAt(indiceDel); } else { var selDoc:Documento = listDocumentos.getItemAt(indice) as Documento; docsSelecionados.addItem(selDoc); } } Aqui está o código que gera o campo "selecionado". Ele verifica se o documento já está no arrayCollection docsSelecionados. Se sim, ele é setado como true: //verifica se ele já está selecionado no checkbox do datagrid var indiceEmDocsSelecionados:int = docsSelecionados.getItemIndex(docX); if (indiceEmDocsSelecionados >= 0) { dict["selecionado"] = true; Alert.show("selecionado o indice " + k.toString()); } else { dict["selecionado"] = false; } Pessoal, sei que essa mensagem é bastante extensa, mas resumi o máximo possível, de forma que possa ser compreendida por alguém que já passou por esse problema ou tenha alguma dica de como resolver. Desde já agradeço toda e qualquer ajuda do grupo. Atenciosamente, João Paulo de Lima Braga Analista de Sistemas, CDIA+ Meyer www.meyerr.com.br --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---