Olá pessoal,
Estou com problemas para capturar os valores selecionados nos checkbox.
Os checkbox são populados por valores do BD, estou usando um mx:tile e um mx:repeate para desenha-los.
Segue o código:
<mx:FormItem label="Para:" width="100%" height="70">
<mx:Tile id="categoryTile" width="100%" height="100%" borderStyle="solid" direction="horizontal"
paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Repeater id="categoryRpt" dataProvider="{categoryList}" >
<mx:CheckBox id="categoryChx" label="{categoryRpt.currentItem.name}" />
</mx:Repeater>
</mx:Tile>
</mx:FormItem>
Ao clicar em um botão quero que ele capture todos os checkbox que estão selecionados.
Obrigado!
Dae seguinte eu faço assim… ve se ajuda
<s:Panel width="40%" title="Perfis" cornerRadius="5" height="50%">
<s:Scroller width="100%" height="100%">
<s:DataGroup id="perfis" itemRenderer="br.com.sectioaurea.libs.CheckBoxRenderer" dataProvider="{listaPerfis}">
<s:layout>
<s:VerticalLayout paddingLeft="5"/>
/s:layout>
</s:DataGroup>
</s:Scroller>
</s:Panel>
Para pegar os selecionados:
for(var a:uint = 0; a < perfis.dataProvider.length; a++){
var idUsuarioList:int = perfis.dataProvider[a].id;
for(var b:uint = 0; b < dg.selectedItem.perfis.length; b++){
var idUsuarioPerfil:int = dg.selectedItem.perfis[b].id;
if(idUsuarioList == idUsuarioPerfil){
var c:CheckBoxRenderer = perfis.getElementAt(a) as CheckBoxRenderer;
c.selected = true;
}
}
}
Mais você está usando o flex 4, esse sistema que estou desenvolvendo ainda está no flex 3…
Tentei aqui e não rolou…
Vc pode fazer o mesmo usando um List no Flex 3.
Mas se quiser continuar a usar o Repeater, experimente colocar:
label="{checkBoxRepeater.currentItem.label}"
data="{checkBoxRepeater.currentItem.data}"
change="checkBox_change(event);"
como parametro de seu checkBox dentro do Repeater, onde checkBoxRepeater é o id do seu repeater.
No listener, escreva algo como:
private function checkBox_change(evt:Event):void {
var ch:CheckBox = evt.currentTarget as CheckBox;
ch.getRepeaterItem().data=ch.value;
}
Precisando de cursos Flex, de uma olhada na Nuccitec.
[]s
Olá, estou com uma dúvida, oq exatemente essa linha está fazendo?
preciso que ao clicar no check ele armazene os ids dos objetos do checkbox em um array.
obrigado!
Entendi agora, ao colocar o data dentro do checkbox eu consigo pegar esse valor.
Consegui resolver agora. Segue o código:
private function checkBox_change(evt:Event):void {
var ch:CheckBox = evt.currentTarget as CheckBox;
var category:Category = ch.data as Category;
selectedCategoryList.addItem(category);
}
Obrigado pela ajuda!
Naquela linha o que está sendo feito é setar o item do data provider do repeater com o valor selecionado no chechbox, pois isso não ocorre automáticamente (Se for Flex 4 aí daria pra fazer com binding bidirecional).
[]s
Entendi, valeu pela explicação…
E para desmarcar todos os checkbox, tem alguma dica ai?
[]'s
Consegui, é só setar novamente o dataprovider do repeat que ele desmarca todos os checkbox.
valeu!
[quote=l.cestarolli]Consegui, é só setar novamente o dataprovider do repeat que ele desmarca todos os checkbox.
valeu![/quote]
Sim, isso ocorre por que vc bindou os itens do repeater aos check box nessa linha de código:
[]s