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ê 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.

Responder a