Solved

Flex CheckBox in Datagrid

Posted on 2009-07-13
2
5,506 Views
Last Modified: 2013-11-11
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

0
Comment
Question by:dtivmk
  • 2
2 Comments
 
LVL 37

Accepted Solution

by:
zzynx earned 500 total points
ID: 24846914
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
 
LVL 37

Expert Comment

by:zzynx
ID: 24958321
Thanx 4 axxepting
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Stop Ads in Browser Google Chrome 3 552
Online Course Not Responding 3 96
free photo watermark software 5 102
embedding a media live encoder stream 3 159
There are times in your Flash CS4 application when you want more than a simple pointer or a hand, and it's hard to find an ideal walk-through to tell you what to do.  I spent a few days recently learning my way around making custom cursors in Flash,…
Here are some practices and techniques that can be adopted into your Flash/Flex application development process. Note: Not all "performance tips" provide an immediately-recognizable benefit.   This article does not include timing validation data,…
The goal of the tutorial is to teach the user how to how to load their YouTube profile onto Flash Media Live Encoder.
The goal of the tutorial is to teach the user how to select the video input device. Make sure you have an input device that in connected and work and recognized by Adobe Flash Media Live Encoder and select it in the “video input” menu.

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question