2009-10-08 8 views
0

J'ai un bouton comme un clic aléatoire, si je clique sur ce bouton, puis je sélectionne 15 case à cocher dans la case à cocher itemagrender de la grille de données. Mais je ne peux pas accéder à la case à cocher? s'il vous plaît me référer? Comment accéder à la case à cocher?comment est-ce que je peux sélectionner la case à cocher particulière dans dataagrender itemrenderer dans flex?

<mx:DataGridColumn headerText="1" rendererIsEditor="true" editorDataField="selected"> 
    <mx:itemRenderer> 
<mx:Component> 
<mx:CheckBox textAlign="center" click="{data.check1 = (data.check1 != 'true') ? 'true' : 'false'};outerDocument.toggleCheckbox(data);outerDocument.calcValues();" dataChange="this.selected=outerDocument.validateCheckbox(data)" themeColor="#ffff00" fillAlphas="[1, 1, 0.75, 0.65]" fillColors="[#f7f7d3, #ffffff, #ff9900, #ffff00]" /> 
    </mx:Component> 
    </mx:itemRenderer> 
    </mx:DataGridColumn> 

Répondre

2

Vérifiez ce code:
Data.as

package 
{ 
    public class Data 
    { 
     [Bindable] 
     public var name:String; 

     [Bindable] 
     public var checked:Boolean; 
     public function Data(name:String, checked:Boolean) 
     { 
      this.name = name; 
      this.checked = checked; 
     } 
    } 
} 

Test.mxml

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" 
    xmlns:local="*" creationComplete="create();"> 
    <mx:Button label="Randomize" click="randomize()"/> 
    <mx:Button label="Trace selected indices" click="traceValues()"/> 
    <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" 
     dataProvider="{dp}"> 
     <mx:columns> 
      <mx:DataGridColumn dataField="name" headerText="Name"/> 
      <mx:DataGridColumn headerText="Checked" dataField="checked"> 
       <mx:itemRenderer> 
       <mx:Component> 
        <mx:CheckBox selected="{data.checked}" 
        change="{data.checked = this.selected;}/> 
       </mx:Component> 
       </mx:itemRenderer> 
      </mx:DataGridColumn> 
     </mx:columns> 
    </mx:DataGrid> 
    <mx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      [Bindable] 
      public var dp:ArrayCollection; 
      public function create():void 
      { 
       var array:Array = []; 
       for(var i:Number = 0; i < 20; i++) 
        array.push(new Data("The Name", false)); 
       dp = new ArrayCollection(array); 
      } 
      private function randomize():void 
      { 
       var selectedNumbers:Array = []; 
       var randomNumber:Number; 
       for(var i:Number = 0; i < 5; i++) 
       { 
       do 
        randomNumber = Math.floor(Math.random() * 20); 
       while(selectedNumbers.indexOf(randomNumber) != -1); 
       dp.getItemAt(randomNumber).checked = !dp.getItemAt(randomNumber).checked; 
       selectedNumbers.push(randomNumber); 
       } 
      } 
      private function traceValues():void 
      { 
       for(var i:Number = 0; i < 20; i++) 
       { 
       if(dp.getItemAt(i).checked) 
        trace(i); 
       } 
      } 
     ]]> 
    </mx:Script> 
</mx:Application> 
+0

Amarghosh merci merci donc. Je travaille beaucoup de temps pour cela mais vous pouvez le faire dans les 10 min. Quelle!!!! un talent que tu es. –

0

Appelez outerDocument.someMethod(this) à partir du gestionnaire d'événements de modification de la case à cocher. De cette façon, le someMethod(checkBox:CheckBox) peut accéder à la case à cocher.

Il serait plus facile de lire votre code si vous le cassez sur différentes lignes plutôt que de tout cacher à l'extrême droite.

MISE À JOUR:

<!-- this is your DataGridColumn's itemRenderer --> 
<mx:itemRenderer> 
    <mx:Component> 
    <mx:CheckBox textAlign="center" selected="{data.checked}"/> 
    <mx:Component> 
<mx:itemRenderer> 

Ajouter ce au gestionnaire d'un clic bouton au hasard:

var selectedNumbers:Array = []; 
var randomNumber:Number; 
for(i = 0; i < 15; i++) 
{ 
    do 
    randomNumber = Math.floor(Math.random() * 40); 
    while(selectedNumbers.indexOf(randomNumber) != -1); 
    //dp is the data provider of the data grid 
    dp.getItemAt(randomNumber).checked = true; 
    selectedNumbers.push(randomNumber); 
} 
+0

ok merci pour votre valeur inframation Amarghosh. Mais je veux Comment puis-je sélectionner 15 case à cocher lorsque le bouton (nom btn est aléatoire) cliquez sur. –

+0

a mis à jour la publication pour sélectionner 15 cases à cocher aléatoires dans la grille de données. btw, pourquoi veux-tu faire ça? – Amarghosh

+0

l'utilisateur veut sélectionner au hasard 15 case à cocher ainsi j'ajoute le bouton ce bouton .i essayé mais montre l'erreur comme vérifié pas la valeur de défault donc j'ajoute // calamount est le nom de dataagrid pour chaque (var article: Objet dans calamount.dataProvider) { article .checked = true; } si je cours j'ai eu Afficher le tag comme vrai

Questions connexes