2009-07-06 5 views
7

In Flex, a volte quando è necessario cancellare un modulo si incontra il problema che i gruppi di pulsanti di opzione sembrano sfidare la cancellazione: prova come potresti, impostando selected = false su tutti i pulsanti, selezionando selection = null sul gruppo, facendo entrambi , facendoli due volte, ecc., ti sembra sempre di finire con un piccolo pulsante radio fastidioso che è ancora selezionato. Come si risolve questo e si ripristina il gruppo di pulsanti di opzione sullo stato iniziale di non selezione?In Flex, come posso deselezionare tutti i pulsanti di opzione in un gruppo?

risposta

12

È necessario raggruppare tutti i pulsanti di opzione in un RadioButtonGroup e quindi impostare la selezione del gruppo di nulla:

<mx:RadioButtonGroup id="myGroup" /> 

<mx:RadioButton label="One" groupName="myGroup" /> 
<mx:RadioButton label="Two" groupName="myGroup" /> 
<mx:RadioButton label="Three" groupName="myGroup" /> 

<mx:Button label="Clear" click="myGroup.selection = null;" /> 
0

L'unico modo per risolvere ciò che so è aggiungere un pulsante radio nascosto fittizio che si seleziona per deselezionare tutti gli altri.

0

Non funziona?

 function clearRadioSelection(theGroup) { 
     theGroup.selection.selected = false; 
     theGroup.selectedRadio = undefined; 
     theGroup.dispatchEvent({type:"change"}); 
    } 

TheGroup è il gruppo pulsante di scelta (non i singoli pulsanti di opzione) da: http://kb2.adobe.com/cps/000/c4e4be2f.html

+0

Ci dispiace, ma che deve essere vecchio codice. Non esiste una proprietà "selectedRadio" e gli eventi non possono essere inviati in questo modo. –

1

Si potrebbe provare a impostare tutti i pulsanti di opzione per un RadioButtonGroup quindi impostare RadioButtonGroup.selection su null

Vedere http://livedocs.adobe.com/flex/3/langref/mx/controls/RadioButtonGroup.html#includeExamplesSummary come riferimento su come implementare il controllo RadioButtonGroup.

+0

Sì, questo funziona in semplici applicazioni di test. Funziona anche per impostare selected = false sul pulsante di opzione selezionato. Ma ho incontrato situazioni in cui nessuna di queste due soluzioni funziona. Mi dispiace essere così vago. Vedrò se riesco a trovare il codice e produrre una demo quando torno dalle vacanze. –

0

Credo che si stia utilizzando il RadiobuttonGroup e si vincolino tutti i controlli del pulsante radio per il gruppo perticolare.

Così, in modo semplice:

funzione privata radioGroupReset(): void

{

radioGroup1.selection = null;

}

Questo dovrebbe funzionare!

0

Ovviamente le risposte precedenti dovrebbero arrivare dove si sta andando nel modo più pulito, ma se colpisci la testa contro il muro, raccogli tutti i tuoi pulsanti radio in un componente e poi ridisegna l'intero componente quando è necessario cancellarlo. Problema risolto.

Le forme sono comunque gimpy. Non c'è bisogno di rendere la vita troppo difficile.

0

Impostare semplicemente la proprietà di selezione di RadioButtonGroup su null e verrà ripristinata la condizione iniziale.

per esempio, se

   <mx:RadioButtonGroup id="answers" /> 

quindi scrivendo la seguente riga in ActionScript

   answers.selection = null; 

sarebbe ripristinare il gruppo con nessun pulsante sinistro selezionato. Spero che ti aiuti. Ho preso l'idea dal seguente link. Buona fortuna.

http://blog.flexexamples.com/2008/01/06/clearing-a-selected-radiobutton-control-in-flex/

Problemi correlati