nasıl ben itemRenderer flex datagrid içinde özellikle onay kutusunu seçebilirsiniz?

2 Cevap php

Ben bu düğmeye tıklarsanız sonra datagrid itemRenderer onay kutusunu içinde 15 onay seçecektir Ama kutusunu erişemez, rastgele tıklama gibi düğme var? bana lütfen? Nasıl onay erişebilir?

<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>

2 Cevap

Check out this 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>

outerDocument.someMethod(this) onay kutusunun değişim olay işleyicisi diyoruz. Bu şekilde, someMethod(checkBox:CheckBox) onay kutusunu erişebilirsiniz.

Eğer farklı çizgiler onu kırmak yerine sağ ucunda her şeyi gizleme eğer kodunuzu okumak için daha kolay olacaktır.

GÜNCELLEME:

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

Rastgele düğmenin tıklatma işleyicisi bu ekleyin:

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);
}