Leonardo, eu fiz assim...ho headerRenderer eu coloquei um checkBox e no click dele eu percorro o arrayCollection do dataGrid marcando o in_selecionado e por fim dou um refresh no arrayCollection.
Agora estou criando uma função para passar esse arrayCollection e gravar no banco. Qualquer dúvida estou a disposição. *Robinho* *Analista/Programador de Sistemas* *Skype: robinhocne* *"A fé em Deus nos faz crer no incrível, ver o invisível e realizar o impossível."* Em 31 de julho de 2014 08:31, Leonardo Oliveira < leonardoc.olive...@gmail.com> escreveu: > Na primeira coluna do seu datagrid você coloca um header renderer e um > componente com uma imagem dentro, eu uso uma imagem em V indicando check ( > https://www.google.com.br/search?q=check&es_sm=93&source=lnms&tbm=isch&sa=X&ei=AibaU-zkOo-gyATNjYGgDw&ved=0CAgQ_AUoAQ&biw=1511&bih=725&dpr=0.9 > ). > Coloca o sortable da coluna false. Coloca no click da imagem pra chamar a > função que irá selecionar os checkboxes. Depois do headerRenderer, coloca o > item Renderer com a chamada para o seu componente checkbox. > (Id do datagrid: _dgCargasAlocadas) > > <mx:DataGridColumn width="3" sortable="false"> > <mx:headerRenderer> > <fx:Component> > <mx:Image buttonMode="true" > click="outerDocument.handlerCkbMarcarTodosAlocadas(event);" > toolTip="Marcar/desmarcar todos" > source="@Embed(source='Estilos/images/check_20x20_2.png')" width="6" > height="4" verticalAlign="middle" horizontalAlign="center"/> > </fx:Component> > </mx:headerRenderer> > <mx:itemRenderer> > <fx:Component> > <Renderer:RendererCheckBox/> > </fx:Component> > </mx:itemRenderer> > </mx:DataGridColumn> > > Componente checkbox: > Crie uma classe extendendo checkbox (comentários no código): > package Interfaces.Faturamento.MontagemDeCarga.Renderer > { > import flash.display.DisplayObject; > import flash.events.Event; > import flash.events.MouseEvent; > import flash.text.TextField; > import mx.controls.CheckBox; > import mx.controls.DataGrid; > import mx.controls.listClasses.BaseListData; > import mx.controls.listClasses.IDropInListItemRenderer; > import mx.core.Application; > import mx.events.CollectionEvent; > import mx.events.FlexEvent; > /* > * Extende checkbox > */ > public class RendererCheckBox extends CheckBox > { > private var _listData:BaseListData > private var _dataGrid:DataGrid; > public function RendererCheckBox(){ > super(); > this.addEventListener(FlexEvent.CREATION_COMPLETE, init); > } > /* > * Sobrescreva a função updateDisplayList dessa forma: > */ > override protected function updateDisplayList(w:Number, h:Number):void{ > super.updateDisplayList(w, h); > var n:int = numChildren; > for (var i:int = 0; i < n; i++){ > var c:DisplayObject = getChildAt(i); > if (!(c is TextField)){ > c.x = (w - c.width) / 2; > c.y = 3; > } > } > } > //ADICIONA LISTENERS DE EVENTOS CLICK E CHANGE > private function init(evt:FlexEvent):void{ > this.addEventListener(MouseEvent.CLICK, isSelected); > this.addEventListener(Event.CHANGE, onChange); > this.toolTip = "Marcar/desmarcar linha"; > this.buttonMode = true; > } > /* -------------- > GETS E SETS > -------------- */ > [Bindable("dataChange")] > public function get __listData():BaseListData{ > return _listData; > } > public function set __listData( value:BaseListData ):void{ > _listData = value; > } > /*SOBRESCREVENDO O ATRIBUTO DATA, > POR CAUSA DO CACHE QUE O FLEX FAZ EM RELAÇÃO > AO DATAGRID E O ITEMRENDERER */ > override public function set data(value:Object):void{ > super.data = value; > this.selected = value['isSelected']; > } > private function onChange( event:Event ):void{ > data['isSelected'] = this.selected; > /* ESSA LINHA PODERIA FICAR MAIS GENÉRICA PARA > PODER SER UTILIZADO EM QUALQUER COMPONENTE, MAS AQUI ESTÁ SENDO USADO > APENAS PARA ESTE DATAGRID*/ > parentDocument._dgCargasAlocadas.dispatchEvent(new > CollectionEvent(CollectionEvent.COLLECTION_CHANGE)); > } > private function isSelected(event:MouseEvent):void > { > /*ATRIBUINDO O VALOR AO METODO SET CRIADO NO COMPONENTE PAI, > PASSANDO EVENTO TODO PARA SER MANUPULADO PELO PAI > (APENAS PREENCHE UM ARRAYCOLLECTION COM OS ÍTENS SELECIONADOS)*/ > parentDocument.linhasSelecionadasCarga(event); > } > } > } > > Na classe pai, escreva o método handlerCkbMarcarTodosAlocadas (chamado > pela imagem do headerRenderer) > na declaração das variáveis: > private var flgSelecionouTodosAlocadas:Boolean = false; > public function handlerCkbMarcarTodosAlocadas(evt:MouseEvent):void{ > if(!flgSelecionouTodosAlocadas){ > /* > * Percorre o datagrid selecionando as linhas e chamando a função de > seleção única > */ > for (var i:int = 0; i<_dgCargasAlocadas.dataProvider.length; i++){ > _dgCargasAlocadas.dataProvider[i].isSelected = true; > _dgCargasAlocadas.selectedItem = _dgCargasAlocadas.dataProvider[i]; > linhasSelecionadasCarga(evt); > } > flgSelecionouTodosAlocadas = true; > } > else{ > for (var x:int = 0; x<_dgCargasAlocadas.dataProvider.length; x++){ > _dgCargasAlocadas.dataProvider[x].isSelected = false; > _dgCargasAlocadas.selectedItem = _dgCargasAlocadas.dataProvider[x]; > linhasSelecionadasCarga(evt); > } > flgSelecionouTodosAlocadas = false; > } > } > > Por fim, a função de seleção única (chamada pelo item renderer checkBox > das linhas): > na declaração das variáveis: > private var CargasSelecionadas:ArrayCollection = new ArrayCollection(); > public function linhasSelecionadasCarga(evt:Event):void{ > if(_dgCargasAlocadas.selectedItem.isSelected){ > CargasSelecionadas.addItem(_dgCargasAlocadas.selectedItem); > } > else{ > for(var i:int = 0; i<CargasSelecionadas.length; i++){ > if(CargasSelecionadas[i].PLACA == _dgCargasAlocadas.selectedItem.PLACA){ > CargasSelecionadas.removeItemAt(i); > } > } > } > } > > Então ao final do processo você tem na sua aplicação um arraycollection > com todos os itens que foram selecionados. > > Em sábado, 26 de julho de 2014 19h42min41s UTC-3, Robinho de Morais > escreveu: > >> Boa noite pessoal, como faço para quando ao clicar no header do datagrid >> da coluna que tenho o checkbox ele ir percorrendo e selecionando ? >> >> Qual o metodo que uso para selecionar isso no datagrid ? >> > -- > -- > 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 > --- > Você recebeu essa mensagem porque está inscrito no grupo quot;flexdev" dos > Grupos do Google. > Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie > um e-mail para flexdev+unsubscr...@googlegroups.com. > Para mais opções, acesse https://groups.google.com/d/optout. > -- -- 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 --- Você está recebendo esta mensagem porque se inscreveu no grupo "flexdev" dos Grupos do Google. Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para flexdev+unsubscr...@googlegroups.com. Para obter mais opções, acesse https://groups.google.com/d/optout.