Flex CheckBox in Datagrid

In the followin flex Code :
Also viewable at : http://www.cse.epicenterlabs.com/checkBoxDg/checkBoxDg.html
1. Add a row in datagrid by clicking on "AddRow"
2. Click on "CheckDg" to see the values of all the checkboxes
     - it shows "checkBox57" or "checkBox64" or some similar string
3. Now, "select" the checkBox in the first row.
4. Click again on "CheckDg"
    -it show "true"

So, initially dp.getItemAt(i).ck1 returns a CheckBox
and later it returns the "selected" value of the CheckBox?
Why this difference?

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html">
		<mx:Canvas>
		<mx:DataGrid x="69" y="119" id="dgFee" editable="true" dataProvider="{dp}">
			<mx:columns>
			<mx:DataGridColumn headerText="Date" dataField="ck1" width="100" editable="true" 
			editorDataField="selected" rendererIsEditor="true">
			<mx:itemRenderer>
				<mx:Component>
					<mx:CheckBox selected="false">
					                   </mx:CheckBox>
				        </mx:Component>
			</mx:itemRenderer>
			</mx:DataGridColumn>
			           <mx:DataGridColumn dataField="amount" headerText="Amount" editable="true">
			             <mx:itemEditor>
			             <mx:Component>
			             	  	  <mx:TextInput restrict="0-9"/>
			             </mx:Component>
			             </mx:itemEditor> 	
			           </mx:DataGridColumn>
			</mx:columns>
		</mx:DataGrid>
		<mx:CheckBox x="130" y="54" label="Checkbox" selected="true" click="Alert.show(abc.selected.toString())" id="abc"/>
<mx:Script>
	<![CDATA[
		import mx.controls.CheckBox;
		import mx.collections.ArrayCollection;
		import mx.controls.Alert;
		public var dp:ArrayCollection = new ArrayCollection();
		public function addRow():void
		{
		  var tmp:Object = new Object();
		  tmp['amount'] = 100;
		  tmp['ck1'] = new CheckBox();
		  dp.addItem(tmp);
		}
		public function delRow():void
		{
			if(dgFee.selectedIndex != -1)
			dp.removeItemAt(dgFee.selectedIndex);
		}
 
		public function loop1():void
		{
			for(var i:int=0;i<dp.length;i++)
			{
			   Alert.show(dp.getItemAt(i).ck1);
			}
		}
	]]>
</mx:Script>
				<mx:Button x="29" y="89" label="AddRow" click="addRow()"/>
				<mx:Button x="107" y="89" label="DelRow" click="delRow()"/>
				<mx:Button x="184" y="89" label="CheckDg" click="loop1()"/>
 
</mx:Canvas>	
</mx:Application>

Open in new window

LVL 1
dtivmkAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

zzynxSoftware engineerCommented:
You render the attribute 'ck1' of your object (of type Object) by means of a CheckBox.
You also use the renderer as the editor (rendererIsEditor="true")

That means that when you select the checkbox, behind the scenes this statement performed:

         tmp['ck1'] = true;  (overwriting the previous value which was a CheckBox)

When you unselect it, behind the scenes this statement performed:

         tmp['ck1'] = false;


So in fact, it is of no use to have this:

tmp['ck1'] = new CheckBox();

Replace it by

        tmp['ck1'] = false;
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
zzynxSoftware engineerCommented:
Thanx 4 axxepting
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Adobe Flash

From novice to tech pro — start learning today.