Não essa é a regra que vc vai utilizar quando clicar no botão baixar, pra
pegar os que estão com
a propriedade baixar marcada.

No checkbox do itemrenderer vc mantém o mesmo código que já postou aqui.

2010/9/30 Ednei <[email protected]>

> Fábio Goll,
>
> Vamos ver se eu pegei o espírito da coisa.
>
> Por exemplo:
>
> // eu declaro um ArrayCollection Temporário
> [Bindable] private var lista_selecionados:ArrayCollection;
>
> // aqui eu declaro sua funcao com algumas adaptacoes
> private function getItensSelecionados():ArrayCollection
> {
>  var selected: ArrayCollection = new ArrayCollection();
>
>  for each( var item: * in dataProvider )
>  {
>     if( item.selecionado )
>    {
>     selected.addItem( item );
>    }
>  }
>  return selected;
> }
>
> // entao no evento click() do itemRenderer eu faço
> <mx:itemRenderer>
>          <mx:Component>
>               <mx:CheckBox click="outerDocument.passaValores(event)"
>                  click="{lista_selecionados = getItensSelecionados}"/>
>          </mx:Component>
> </mx:itemRenderer>
>
> O que me diz?
>
> Valeu!
>
> On 30 set, 14:38, Fábio Goll <[email protected]> wrote:
> > Segue uma função que eu fiz pra um componente meu, que tem checkbox no
> > datagrid.
> >
> > Troque a propriedade selecionado por baixar e dataProvider pela sua
> coleção
> > do grid.
> >
> > protected function getItensSelecionados(): ArrayCollection {
> > var selected: ArrayCollection = new ArrayCollection();
> > for each( var item: * in dataProvider ){
> > trace("selecionado: "+ item.selecionado );
> > if( item.selecionado )
> > selected.addItem( item );
> >
> > }
> > return selected;
> > }
> >
> > 2010/9/30 Ednei <[email protected]>
> >
> > > Luiz Nogueira,
> >
> > > Saquei! Mas ainda estou avaliando as alternativas. Vamos ver o que o
> > > Fábio tem pra nós, depois vou comparar a duas e ver qual se encaixa
> > > melhor no que eu preciso.
> >
> > > Valeu pela atenção.
> >
> > > On 30 set, 14:14, Ednei <[email protected]> wrote:
> > > > Fabio Goll,
> >
> > > > Por incrível que parece, funciona sim. Eu uso outro intemRenderer
> > > > idêntico, para fazer funções como excluir vários ítens do dataGrid
> que
> > > > o usuário marcar.
> >
> > > > Me predoe a ignorância, mas como se faz esse "for nos itens da
> coleção
> > > > e pegar os que estão com
> > > > baixar == true"? Me parece mais prático.
> >
> > > > Obrigado
> >
> > > > On 30 set, 14:05, Fábio Goll <[email protected]> wrote:
> >
> > > > > Isso aqui não vai funcionar:
> >
> > > > > /* Quando vc manipula a propriedade data, que contém o registro do
> > > > > dataGrid,             vc está manipulando diretamente o
> dataProvider.
> > > Assim,
> > > > > na hora de
> > > > > salvar no banco,                         basta enviar o objeto de
> > > volta, com
> > > > > os valores atualizados*/
> >
> > > > > data.baixar = chkbaixa.selected;
> >
> > > > > Vc teria que usar assim pra gravar no dataprovider:
> >
> > > > > *super.*data.baixar = chkbaixa.selected;
> >
> > > > > Pesquise sobre "itemRenderer as itemEditor", vc não precisa ficar
> > > > > controlando na mão isso.
> >
> > > > > Depois é só fazer um for nos itens da coleção e pegar os que estão
> com
> > > > > baixar == true, simples assim.
> >
> > > > > 2010/9/30 Ednei <[email protected]>
> >
> > > > > > Luiz Nogueira,
> >
> > > > > > Acho que entendi como entendi como funciona a sua função, mas
> estou
> > > > > > tendo dificuldade em adaptá-la ao que eu tenho.
> >
> > > > > > A dúvida me surgiu em como eu chamarei a função MarcaDesmarcaCHK
> > > sendo
> > > > > > o meu ItemRendere um componente esterno.
> >
> > > > > > Veja:
> >
> > > > > > Meu itemRenderer é o arquivo ItemRendererChkBaixar.mxml:
> > > > > > ----
> >
> > > > > > <?xml version="1.0" encoding="utf-8"?>
> > > > > > <mx:Box xmlns:mx="http://www.adobe.com/2006/mxml";
> paddingLeft="15">
> >
> > > > > >        <mx:Script>
> > > > > >                <![CDATA[
> > > > > >                        import mx.binding.utils.BindingUtils;
> >
> > > > > >                        /*Para entender a necessidade deste
> método,
> > > veja:
> > > > > >                        http://www.vedovelli.com.br/?p=835*/
> > > > > >                         override public function set
> > > > > > data(value:Object):void
> > > > > >                        {
> > > > > >                                super.data = value;
> >
> > > > > >                                 if(value.baixar == true)
> > > > > >                                {
> > > > > >                                        chkbaixa.selected = true;
> > > > > >                                } else {
> > > > > >                                        chkbaixa.selected = false;
> > > > > >                                }
> >
> > > > > >                                if ( value.Situacao == 'C' )
> > > > > >                                {
> > > > > >                                        chkbaixa.enabled = false;
> > > > > >                                }
> > > > > >                                else
> > > > > >                                {
> > > > > >                                        chkbaixa.enabled =  true;
> > > > > >                                }
> > > > > >                        }
> >
> > > > > >                        private function alterar():void
> > > > > >                        {
> > > > > >                                /* Quando vc manipula a
> propriedade
> > > data,
> > > > > > que contém o registro do
> > > > > > dataGrid,
> > > > > >                                vc está manipulando diretamente o
> > > > > > dataProvider. Assim, na hora de
> > > > > > salvar no banco,
> > > > > >                                basta enviar o objeto de volta,
> com os
> > > > > > valores atualizados*/
> > > > > >                                data.baixar = chkbaixa.selected;
> > > > > >                        }
> >
> > > > > >                ]]>
> > > > > >        </mx:Script>
> > > > > >        <mx:Binding destination="chkbaixa.selected"
> > > source="data.baixar"/>
> > > > > >        <mx:CheckBox id="chkbaixa" change="alterar()" />
> >
> > > > > > </mx:Box>
> >
> > > > > > -------------------
> >
> > > > > > e no meu DataGrid eu tenho:
> >
> > > > > > ----------
> >
> > > > > > <mx:DataGrid x="10" y="28" width="939" height="413"
> > > > > >        dataProvider="{lista_financeiro}"
> > > > > >        doubleClickEnabled="true"
> itemDoubleClick="{preenche_form();}"
> > > > > >        id="dg_financeiro"
> > > creationComplete="{chama_lista_financeiro()};"
> > > > > > headerHeight="22">
> >
> > > > > >        <mx:columns>
> > > > > >            <mx:DataGridColumn headerText="B" textAlign="center"
> > > > > > dataField="baixar"
> >
> > >  itemRenderer="br.com.app.component.ItemRendererChkBaixar"
> > > > > > width="40"/
> >
> > > > > >        (...)
> >
> > > > > > ----------
> >
> > > > > > On 30 set, 12:08, Luiz Nogueira <[email protected]> wrote:
> > > > > > > Eita que itemrenderer da trabalho mas vou tentar te dar uma
> força.
> >
> > > > > > > Cara parece complexo demais, mas vc tem que verificar o evento
> q o
> > > > > > > cara ta fazendo
> >
> > > > > > > vc cria tipo um arrayTemporario do tipo arraycollection
> >
> > > > > > > olha uma funcao que usei uma vez
> >
> > > > > > > to te passando a funcao completa aqui e acho q vc vai
> entender...
> >
> > > > > > > public function MarcaDesmarcaCHK(e:Event):void{
> > > > > > >         var obj:Object;
> > > > > > >         var valorTotal:Number;
> > > > > > >         var nValor:String;
> > > > > > >         var nValorTemp:String;
> > > > > > >         var meusDados:SisaBrVo = new SisaBrVo;
> > > > > > >         var index:int;
> > > > > > >         if(Application.application.bBRCHKSelected == true &&
> > > > > > > Application.application.bClicouCheck == false){
> > > > > > >                 EmprestimoSelecionado =
> > > > > > SisaBrVo(e.currentTarget.selectedItem);
> > > > > > >                 meusDados.sql_rowid =
> > > EmprestimoSelecionado.sql_rowid;
> > > > > > >                 meusDados.cConta =
> EmprestimoSelecionado.cConta;
> > > > > > >                 meusDados.cNome = EmprestimoSelecionado.cNome;
> > > > > > >                 meusDados.nCpfCgc =
> EmprestimoSelecionado.nCpfCgc;
> > > > > > >                 meusDados.nMatEmp =
> EmprestimoSelecionado.nMatEmp;
> > > > > > >                 meusDados.nTParc =
> EmprestimoSelecionado.nTParc;
> > > > > > >                 meusDados.nValor =
> EmprestimoSelecionado.nValor;
> > > > > > >                 meusDados.cTipo = EmprestimoSelecionado.cTipo;
> > > > > > >                 meusDados.bSelect = true;
> > > > > > >                 Application.application.nQtdEmpSelecionados++;
> > > > > > >                 nValor =
> > > > > > >
> formatarAmericano.format(EmprestimoSelecionado.nValor.toString());
> > > > > > >                 nValorTemp =
> > > > > > >
> formatarAmericano.format(nSomaVlrEmpSelecionados.text.toString());
> > > > > > >                 valorTotal = parseFloat(nValorTemp.toString())
> +
> > > > > > > parseFloat(nValor.toString());
> > > > > > >                 nSomaVlrEmpSelecionados.text =
> > > > > > > formatarReal.format(valorTotal.valueOf().toString());
> > > > > > >                 arrayTempDadosSelecionados.addItem(meusDados);
> > > > > > >                 nQtdEmpSelecionados.text =
> > > > > > > Application.application.nQtdEmpSelecionados;
> > > > > > >                 Application.application.bClicouCheck = true;
> > > > > > >         }
> > > > > > >         if(Application.application.bBRCHKSelected == false &&
> > > > > > > Application.application.bClicouCheck == true){
> > > > > > >                 EmprestimoSelecionado =
> > > > > > SisaBrVo(e.currentTarget.selectedItem);
> > > > > > >                 Application.application.nQtdEmpSelecionados--;
> > > > > > >                 nValor =
> > > > > > >
> formatarAmericano.format(EmprestimoSelecionado.nValor.toString());
> > > > > > >                 nValorTemp =
> > > > > > >
> formatarAmericano.format(nSomaVlrEmpSelecionados.text.toString());
> > > > > > >                 valorTotal = parseFloat(nValorTemp.toString())
> -
> > > > > > > parseFloat(nValor.toString());
> > > > > > >                 nSomaVlrEmpSelecionados.text =
> > > > > > > formatarReal.format(valorTotal.valueOf().toString());
> > > > > > >                 procura_index(EmprestimoSelecionado.sql_rowid,
> > > > > > > arrayTempDadosSelecionados);
> > > > > > >                 nQtdEmpSelecionados.text =
> > > > > > > Application.application.nQtdEmpSelecionados;
> > > > > > >                 Application.application.bClicouCheck = false;
> > > > > > >         }
> >
> > > > > > > }
> >
> > > > > > > no seu gid vc colocar assim
> >
> > > > > > > click="MarcaDesmarcaCHK(event)"
> >
> > > > > > > Se nao entender tento te explicar melhor blz?
> >
> > > > > > > tem outra funcao que uso dentro do meu itemrenderer
> >
> > > > > > > public function passaValores(e:Event):void{
> > > > > > >         if(e.target.selected == true){
> > > > > > >                 //Alert.show('Marcou');
> > > > > > >                 Application.application.bBRMarcado = true;
> > > > > > >                 Application.application.bBRCHKSelected = true;
> > > > > > >                 Application.application.bClicouCheck = false;
> > > > > > >         } else{
> > > > > > >                 //Alert.show('Desmarcou');
> > > > > > >                 Application.application.bBRMarcado = false;
> > > > > > >                 Application.application.bBRCHKSelected = false;
> > > > > > >                 Application.application.bClicouCheck = true;
> > > > > > >         }
> >
> > > > > > > }
> >
> > > > > > > meu itemredere ficou assim:
> >
> > > > > > >
> <mx:DataGridColumn
> > > > > > headerText=" " textAlign="center"
> > > > > > > dataField="bSelect" width="20" editable="true"
> > > rendererIsEditor="true"
> >
> > ...
> >
> > mais »
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
Fábio Goll
Gtalk/Msn: [email protected]
Twitter: @fabiogoll

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a