Você pode usar as duas coisas juntas. Ao invés de correr o array você
pode adicionar um listener para cada checkbox.
Quando o evento subir vc vai pegar a propriedade "data" do "target" do
evento, que no caso será o checkbox e então adicionar no array de ids.
ficaria mais ou menos assim:
<mx:CheckBox id="chk_opcional"
label="{rpt_opcionais.currentItem.opcional}"
data="{rpt_opcionais.currentItem}" click="add(event);" />
public function add(event:MouseClick):void {
if(CheckBox(event.target).selected){
arrayCollection.addItem(event.target.data.idopcional)
}
else {
var idx:int =
arrayCollection.getItemIndex(event.target.data.idopcional);
if(idx != -1)
arrayCollection.removeItem(idx);
}
}
Note que eu mudei o array para arrayCollection para que vc possa
controlar melhor a inclusão e exclusão dos dados.
[]'s
<
On 26 fev, 11:33, Bruno Carneiro <[email protected]> wrote:
> Paulo, não seria complicar demais o código?
>
> Imaginei aqui como seria, no click o checkbox gravar o id no array...
> na ocasião do click, como eu vou saber o index do checkbox em relação
> ao repeter?
>
> On 26 fev, 11:26, Paulo Augusto Teixeira <[email protected]>
> wrote:
>
>
>
> > Tem que usar eventos, para ir gravando no array os checkboxers selecionados.
>
> > Use o poder da Assincronicidade do Flex.
>
> > 2010/2/26 Bruno Carneiro <[email protected]>
>
> > > Tenho um AC com itens cujas propriedades são idopcional e opcional.
>
> > > Dou para o usuário a opção de escolher zero ou mais itens.
> > > <mx:Tile direction="vertical" width="100%">
> > > <mx:Repeater id="rpt_opcionais" dataProvider="{this.opcionais_dp}">
> > > <mx:CheckBox id="chk_opcional"
> > > label="{rpt_opcionais.currentItem.opcional}" />
> > > </mx:Repeater>
> > > </mx:Tile>
>
> > > Depois, na hora de gravar no banco, preciso de gerar um array com os
> > > ids dos opcionais escolhidos.
>
> > > var opcionais:Array;
> > > for (var i:int = 0; i<chk_opcional.length ; i++){
> > > if (chk_opcional[i].selected){
> > > for (var j:int = 0; j<this.opcionais_dp.length ; i++){
> > > if (opcionais_dp[j].opcional ==
> > > chk_opcional[i].label){
> > > opcionais.push(opcionais_dp[j].idopcional;
> > > }
> > > }
> > > }
> > > }
>
> > > Achei muito ruim porque como eu não tenho o id gravado no checkbox eu
> > > preciso percorrer o AC para achar o item correspondente ao checkbox no
> > > AC e então pegar seu id. Assim fica um loop ( percorrer os checkbox )
> > > dentro de outro loop ( percorrer os arrays )
>
> > > Existe uma forma melhor de fazer isso, algo como gravar o id junto com
> > > o checkbox?
>
> > > --
> > > 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 emhttp://groups.google.com/group/flexdev
>
> > --
> > Paulo A. Teixeira
> > IT Consulting Expert - Infinitum Technologies Solution
> > Adobe Certified Expert - Rich Internet Application Specialist
> > Adobe Certified Expert - Flex 3 with AIR
> > Adobe Certified Expert - ColdFusion 8
> > --
> > Blog:www.pauloteixeira.blog.br
> > Mobile: (+55 21) 9700-9665- Ocultar texto das mensagens anteriores -
>
> > - Mostrar texto das mensagens anteriores -
--
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