2009-04-28 4 views
1

Ich habe ein Array von Objekten, die ich als Datenquelle für meinen Repeater verwenden.bekommen mx: CheckBox Werte von innen mx: Repeater

<mx:Repeater id="categoryRepeater" dataProvider="{this.allCategories}"> 
<mx:HBox> 
<mx:Spacer width="20"/> 
<mx:CheckBox id="categoryCheckBox" label="{categoryRepeater.currentItem.question}"/> 
</mx:HBox> 
</mx:Repeater> 

Ich möchte, welche der Kontrollkästchen in der Liste in der Lage sein zu sagen, überprüft worden sind, aber ich bin nicht sicher, wie es zu tun. Ich weiß, dass ich eine Funktion hinzufügen kann, wenn es geklickt wird, aber ich weiß nicht, wie man sagt, welche Checkbox die Funktion genannt hat.

Antwort

1

Verwenden Sie die currentIndex-Eigenschaft.

+0

Können Sie mir in die Richtung eines Beispiels zeigen? Hier ist, was ich versuche: Es scheint jedoch, dass die Funktion niemals – KevMo

+0

aufgerufen wird, das sollte categoryRepeater.currentIndex sagen – KevMo

+0

Der Link zu der Flex 3-Dokumentation, die ich ursprünglich veröffentlicht habe, enthält ein Beispiel unten. Ersetzen Sie einfach currentTarget.getRepeaterItem() durch currentTarget.currentIndex und versuchen Sie es. – dirkgently

1

Ich weiß, dass dies ein sehr alter Beitrag ist, aber ich hatte das gleiche Problem und der aktuelleIndex war keine ausreichende Antwort für mich. Was ich fand, besser zu arbeiten, war eine Funktion auf Klick zu erstellen:

<mx:Repeater id="rp" dataProvider="{dp}"> 
<s:CheckBox height="100%" width="100%" label="{String(rp.currentItem)}" 
click="showAlert(event);"/> 
</mx:Repeater> 

und die showAlert Funktion sieht wie folgt aus:

private function showAlert(evt:MouseEvent):void { 
    var curBox:CheckBox = evt.currentTarget as CheckBox; 
    var str:String = curBox.content.toString(); 
    if(curBox.selected) 
    Alert.show(str + " clicked"); 
} 

diese Weise können Sie mit dem Ereignis als CheckBox umgehen kann innerhalb von Ihren ActionScript-Code und suchen Sie nach Werten, z. B. ob diese ausgewählt wurden oder nicht usw.