isso mesmo, pelo que eu ja estudei do combobox, list e datagrid ele controstroi os itens de acordo com a rolagem ou seja so existem os itens que voce ta vendo os pra baixo nao existem por isso voce tem de controlar de acordo com o seu dataprovider, que deve ser um array nao ? ai eu sempre controlo o array e dessa forma consigo mexer no itemrender
2012/1/11 Cristian Göhl <[email protected]> > 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 <[email protected]> > *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 <[email protected]> >>> *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 > -- *Hélio Antonio Francisco Silva* Desenvolvedor web Certificado Flash developer Certificado Flash Design Certificado web developer Consultor Microsiga / Totvs Desenvolvedor ADVPL / ASP Analista de sistemas e ERP Sênior. -- 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
