Tem alguma forma de eu percorrer meu list.dataProvider e chamar essa função:

public function clickCheck(event:Event):void
            {
                var e:MyCheckBoxEvent = event as MyCheckBoxEvent;
//e.itemRenderer.cb.label = "changed"; //just to verify that we're looking at the correct renderer :)
                Alert.show("Cliquei: " + e.itemRenderer.labelDisplay.text);
            }

?????

Em 11/01/2012 11:03, Ernani Joppert Pontes Martins escreveu:
Eu fiz algo parecido, mas, como no componente List eu tenho um objeto (VO), eu setei no VO uma propriedade booleana.

Como tudo se trata de um VO genérico, eu fiz o item renderer como se fosse um componente data aware...:P

MeuVO contém a propriedade

var isSelected : Boolean = false;

No ItemRenderer em si, fiz os seguintes métodos, dentro de fx:Script...

// grava ou remove do db de acordo com a propriedade isSelected
                private function onChange( evt : Event ) : void
                {
                    var vo : MeuVO = data as MeuVO;

                    if ( !vo.isSelected )
                    {
                        // grava no db
setVOValueInDB.token = service.createOrUpdateVO( obj );
                    }
                    else
                    {
                        // deleta do db
                        removeVOValueInDB.token = service.deleteVO( obj );
                    }
                }

                // callback de retorno quando marcando um item
                // ou seja, marcando um item como selecionado
protected function setVOValueInDBResultHandler( event : ResultEvent ) : void
                {
var ret : Boolean = setVOValueInDB.lastResult as Boolean;

                    if ( ret )
                    {
                        data.isSelected = true;
                    }
                    else
                    {
                        data.isSelected = false;
                    }
                }

                // retorno do callback quando removendo um registro
                // ou seja, desmarcando um item
protected function removeVOValueInDBResultHandler( event : ResultEvent ) : void
                {
var ret : Boolean = removeVOValueInDB.lastResult as Boolean;

                    if ( ret )
                    {
                        data.isSelected = false;
                    }
                    else
                    {
                        data.isSelected = true;
                    }
                }

Já no MXML do mesmo item renderer, contém isto:

<fx:Declarations>
<services:GenericVOService id="service"
fault="Alert.show( 'Aqui vai a mensagem de erro do RemoteObject, uma msg genérica.' )"
 showBusyCursor="true" />

<s:CallResponder id="setVOValueInDB" result="setVOValueInDBResultHandler(event)" /> <s:CallResponder id="removeVOValueInDB" result="removeVOValueInDBResultHandler(event)" />
</fx:Declarations>

<s:HGroup width="100%" height="100%" horizontalAlign="left" verticalAlign="middle" paddingLeft="5">
<s:CheckBox selected="{ data.isSelected }" click="onChange(event);" />
<s:Label text="{ data.categoria }" />
</s:HGroup>

Abraço,

Ernani

2012/1/11 Julio Cesar <[email protected] <mailto:[email protected]>>

    Pessoal consegui por parte,*(agora preciso adaptar isso para
    selecionar todos de uma vez)*

    consegui na aplicação principal pegar o event do itemrenderer,
    tipo o click do checkbox.

    criei uma classe:

    package
    {
        import flash.events.Event;

        public class MyCheckBoxEvent extends Event
        {
            public var isSelected:Boolean;
            public var itemRenderer:Object;
            public static const SELECTED_CHANGED:String =
    "selectedChanged";

            public function MyCheckBoxEvent(type:String,
    itemRenderer:Object, isSelected:Boolean=false){
                super(type);
                this.itemRenderer = itemRenderer;
                this.isSelected = isSelected;
            }

            override public function clone():Event{
                return new MyCheckBoxEvent(type, this.itemRenderer,
    this.isSelected);
            }
        }
    }


    no click do meu checkbox dentro do itemrenderer coloquei isso:

                    var evt:MyCheckBoxEvent = new
    MyCheckBoxEvent(MyCheckBoxEvent.SELECTED_CHANGED, this, cb.selected);
                    owner.dispatchEvent(evt); //Dispatch event from
    the List component, not from the item renderer

    ai no meu list coloquei assim:

    list.addEventListener('selectedChanged',clickCheck);

    e minha funcao:


    public function clickCheck(event:Event):void
                {
                    var e:MyCheckBoxEvent = event as MyCheckBoxEvent;
                    Alert.show("Cliquei: " +
    e.itemRenderer.labelDisplay.text);
                }


    fonte: http://nwebb.co.uk/blog/?p=47



    Em 11/01/2012 01:58, Cristian Göhl escreveu:
    Boa madrugada hehe,
    Eu uso _override no set data_**para os meus IR, indiferente de
    criados via MXML ou AS.
    override public function set data(value:Object):void
            {
                super.data = value;
                if(value != null)
                {
                    // bla bla bla acessa os dados de
    data[column.dataField] ou não e faz o que precisar com outros
    comps(cb, label,etc);
                }
            }
    Ai, meio que esqueci, acho que cria o change do CB no IR, e manda
    atualizar os dados originais(ex. data[column.dataField]);
    Dependendo o que você precisar, também pode disparar eventos do
    IR e escutar no form, então fazer algo.
    Abraço.
    *From:* Julio Cesar <mailto:[email protected]>
    *Sent:* Tuesday, January 10, 2012 4:33 PM
    *To:* [email protected] <mailto:[email protected]>
    *Subject:* Re: [flexdev] Re: Como acessar um itemrenderer de um
    list ??
    Outra coisa, meu itemrenderer não é só um checkbox, é um
    checkbox, um label, e um textinput, pq qdo clico 2x em cima dele,
    consigo renomeá-lo.

    Em 10/01/2012 14:47, Julio Cesar escreveu:
    Assim, estou montando um list dinamicamente:

    var lista:List = new List();
           lista.width = 100;
          e vou setando as confs dele (tamanho, cor, etc...)

    depois eu digo que cada linha será um checkbox, a forma que eu
    achei dinamicamente foi com ClassFactory, desssa forma:

                        var customItemRenderer:ClassFactory = new
    ClassFactory(checkRenderer);
                        lista.itemRenderer = customItemRenderer;

    depois eu preencho o dataprovider dele com meu arraycollection

    depois eu adiciono na tela:
    panel_listas.addElement(lista);


    tudo isso dinamicamente, até ai blz, gera legal, ai eu quero
    acessar alguma linha e dar um selected no checkbox, ou até mesmo
    selecionaar todos os checks ao msm tempo, é ai q eu enrosco.

    erictonussi
    eu quero pq eu quero saber quais estão marcados

    helio.afsilva
    não sei se da para pegar o array bindado pq toda hora muda ele

    leonardoc.oliveira
    gostei do seu link hehe

    Em 10/01/2012 13:36, Eric Tonussi escreveu:
    Explica melhor o que exatamente você quer fazer. Para que você
    quer acessar este item render?

    Em 10 de janeiro de 2012 13:25, Julio Cesar
    <[email protected] <mailto:[email protected]>> escreveu:

        Cara difícil isso, coloquei um breakpoint nas linhas abaixo
        (na vdd não manjo mto debugar) to tentando aprender

        var customItemRenderer:ClassFactory = new
        ClassFactory(checkRenderer);
        lista.itemRenderer = customItemRenderer;

        lista.dataProvider = ac_colunas;

        dentro de checkRenderer tem um combobox chamado cb que
        recebe 'selected'

        mas não consegui identificar ainda


        Em 10/01/2012 12:47, Leonardo Oliveira escreveu:

            Julio, use o modo debug. Coloque um breakpoint onde vc
            quiser,

            adicione uma expressão watch ao seu itemRenderer e veja
            na aba
            Expressions. Tudo que vc precisa está lá.

            On 10 jan, 11:05, Julio Cesar<[email protected]
            <mailto:[email protected]>>  wrote:

                Boa tarde pessoal

                Tenho um list com itemrenderer de um combobox

                Gostaria de saber se tem como acessar este item
                renderer

                valeu


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


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


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

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


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

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