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
-~----------~----~----~----~------~----~------~--~---

Responder a