Opa, se entendi você quer marcar tudo, simplesmente altere o valor no seu dataProvider(bindable).
O IR deve identificar a mudança e cair no set data e já era. abraço. From: Julio Cesar Sent: Wednesday, January 11, 2012 12:04 PM To: [email protected] Subject: Re: [flexdev] Re: Como acessar um itemrenderer de um list ?? Cara desse jeito deu quase certo, porém acontece o seguinte, meu list tem um scroll, tudo q esta visível ele pega, o resto q vem depois de descer ele nao pega Em 11/01/2012 11:25, Ernani Joppert Pontes Martins escreveu: Faça assim: <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" creationComplete="initApp()"> private function initApp() : void { meuComponente.itemRenderer = new ClassFactory( MeuRenderer ); } private function obtemObjeto( ) : void { var i : int = meuComponente.selectedIndex; var renderer : MeuRenderer = meuComponente.dataGroup.getElementAt( i ) as MeuRenderer; ............ seu alerta -> Alert.show("Cliquei: " + renderer.labelDisplay.text); ............. } Espero ter ajudado. Abraço, Ernani 2012/1/11 Julio Cesar <[email protected]> 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]> 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 Sent: Tuesday, January 10, 2012 4:33 PM To: [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]> 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]> 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] 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 -- 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 -- 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 -- 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 -- 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
