Checkbox/RadioButton, чтобы выбрать и отменить выбор всех флажков во всплывающем окне
У меня есть список флажков, которые я хочу иметь возможность выбирать и снимать их все сразу, как бы | я сделал это, используя флажок?
Mxml флажков у меня есть ниже:
<mx:VBox>
<mx:CheckBox id="newCB" label="NEW" selected="true" change="onCheckboxChange(event)" />
<mx:CheckBox id="tradeCB" label="TRADE" selected="true" change="onCheckboxChange(event)"/>
<mx:CheckBox id="amendCB" label="AMEND" selected="true" change="onCheckboxChange(event)" />
<mx:CheckBox id="cancelCB" label="CANCEL" selected="true" change="onCheckboxChange(event)" />
</mx:VBox>
2 ответа
Например, вы можете использовать кнопку, чтобы установить или отменить выбор всех ваших флажков следующим образом:
<mx:VBox id="box">
<mx:CheckBox id="newCB" label="NEW" selected="true" change="onCheckboxChange(event)" />
<mx:CheckBox id="tradeCB" label="TRADE" selected="true" change="onCheckboxChange(event)"/>
<mx:CheckBox id="amendCB" label="AMEND" selected="true" change="onCheckboxChange(event)" />
<mx:CheckBox id="cancelCB" label="CANCEL" selected="true" change="onCheckboxChange(event)" />
</mx:VBox>
затем
var num_children:int = box.numChildren;
var selected:Boolean = true;
for(var i:int = 0; i < num_children; i++)
{
var checkbox:CheckBox = CheckBox(box.getChildAt(i));
checkbox.selected = ! selected;
}
Редактировать:
Вы просто должны инвертировать selected
, затем:
for(var i:int = 0; i < num_children; i++)
{
var checkbox:CheckBox = CheckBox(box.getChildAt(i));
if(checkbox.selected == selected) checkbox.selected = ! selected;
}
selected = false;
Надеюсь, что это может помочь.
Я сделал небольшое приложение для песочницы, чтобы показать использование состояний просмотра. При нажатии кнопки это меняет состояние, а флажки selected
свойства могут быть связаны с государством.
Используя состояния
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:Button click="onClick()" label="{this.currentState=='check'?'uncheck':'check'}"/>
<mx:VBox>
<mx:CheckBox id="newCB" label="NEW" selected="true" selected.check="true" selected.uncheck="false"/>
<mx:CheckBox id="tradeCB" label="TRADE" selected="true" selected.check="true" selected.uncheck="false"/>
<mx:CheckBox id="amendCB" label="AMEND" selected="true" selected.check="true" selected.uncheck="false"/>
<mx:CheckBox id="cancelCB" label="CANCEL" selected="true" selected.check="true" selected.uncheck="false"/>
</mx:VBox>
</s:WindowedApplication>
Используя цикл
<?xml version="1.0"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script><![CDATA[
[Bindable]
private var checkAll:Boolean = false;
public function onClick():void {
for each(var c:CheckBox in checkboxes.getChildren()){
c.selected = checkAll;
}
checkAll = !checkAll;
}
]]></fx:Script>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:Button click="onClick()" label="{checkAll?'check all':'uncheck all'}"/>
<mx:VBox
id="checkboxes">
<mx:CheckBox id="newCB" label="NEW" selected="true"/>
<mx:CheckBox id="tradeCB" label="TRADE" selected="true" />
<mx:CheckBox id="amendCB" label="AMEND" selected="true" />
<mx:CheckBox id="cancelCB" label="CANCEL" selected="true"/>
</mx:VBox>
</s:WindowedApplication>