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