See the itemrenderer posts on my blog
On 1/18/12 2:08 AM, "abhinay.dronamraju" <abhinay.dronamr...@yahoo.com> wrote: Hi I am new to flex and I am not able to figure out how to stop checkboxes from randomly getting selected in a datagrid. here is the code I have so far. Thanks <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="550" height="400" creationComplete="initDataGridData()" > <fx:Declarations> <mx:NumberFormatter id="numberFormatter" decimalSeparatorFrom="." decimalSeparatorTo="." precision="2" rounding="none" thousandsSeparatorFrom="," thousandsSeparatorTo="," useNegativeSign="true" useThousandsSeparator="true"/> <s:CallResponder id="tradesPanel"/> <s:ArrayList id="myDP"> <fx:Object obhNumber="1" pairNumber="1" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="2" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="3" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="4" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="5" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="6" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="7" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="8" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="9" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="10" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="11" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="12" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="13" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="14" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="15" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="16" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="17" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="18" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="19" Stock1="a" Stock2="b" /> <fx:Object obhNumber="1" pairNumber="20" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="1" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="2" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="3" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="4" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="5" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="6" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="7" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="8" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="9" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="10" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="11" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="12" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="13" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="14" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="15" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="16" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="17" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="18" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="19" Stock1="a" Stock2="b" /> <fx:Object obhNumber="2" pairNumber="20" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="1" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="2" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="3" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="4" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="5" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="6" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="7" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="8" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="9" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="10" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="11" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="12" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="13" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="14" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="15" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="16" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="17" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="18" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="19" Stock1="a" Stock2="b" /> <fx:Object obhNumber="3" pairNumber="20" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="1" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="2" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="3" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="4" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="5" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="6" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="7" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="8" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="9" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="10" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="11" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="12" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="13" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="14" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="15" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="16" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="17" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="18" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="19" Stock1="a" Stock2="b" /> <fx:Object obhNumber="4" pairNumber="20" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="1" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="2" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="3" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="4" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="5" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="6" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="7" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="8" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="9" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="10" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="11" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="12" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="13" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="14" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="15" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="16" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="17" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="18" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="19" Stock1="a" Stock2="b" /> <fx:Object obhNumber="5" pairNumber="20" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="1" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="2" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="3" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="4" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="5" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="6" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="7" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="8" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="9" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="10" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="11" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="12" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="13" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="14" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="15" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="16" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="17" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="18" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="19" Stock1="a" Stock2="b" /> <fx:Object obhNumber="6" pairNumber="20" Stock1="a" Stock2="b" /> </s:ArrayList> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.collections.ArrayList; import mx.controls.*; import mx.controls.AdvancedDataGrid; import mx.controls.Alert; import mx.controls.Button; import mx.controls.TextArea; import mx.controls.CheckBox; import mx.events.CloseEvent; import mx.events.FlexEvent; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import spark.components.*; var freezePair:Boolean; var chkBox:mx.controls.CheckBox; protected var populatedData:ArrayList = new ArrayList(); public var myDP1:ArrayCollection; [Bindable] public function initDataGridData():void { myDP1 = new ArrayCollection(); for (var obh:Number = 1; obh<=6 ; obh++) { for (var pair:Number = 1; pair<=20 ; pair++) { myDP1.addItem({obhNumber: obh, pairNumber: pair}); } } gridTable.dataProvider=myDP1; gridTable.validateNow(); } public function fetchProfit(event:Event): void { var obh:Number = gridTable.selectedItem.obhNumber; var pair:Number = gridTable.selectedItem.pairNumber; //fetch the profit from backed and display gridTable.selectedItem.profit = numberFormatter.format(obh+pair); gridTable.invalidateList(); //Alert.show("Are you sure you want to freeze the trade", "Warning", (Alert.NO | Alert.YES), this,null, null, Alert.NO, null); //var index:Number = gridTable.selectedIndex; } public function showWarning(flag:Boolean, mychkBox:mx.controls.CheckBox):void { freezePair = flag; chkBox = mychkBox; if(flag){ Alert.show("Are you sure you want to freeze the pair?" , "Warning", (Alert.NO | Alert.YES), this, handleYesNoWarningDialog, null, Alert.NO, null); }else { Alert.show("Are you sure you want to unfreeze the pair? ", "Warning", (Alert.NO | Alert.YES), this, handleYesNoWarningDialog, null, Alert.NO, null); } } private function handleYesNoWarningDialog(event:CloseEvent):void { if(event.detail == Alert.YES){//Yes var obh:Number = gridTable.selectedItem.obhNumber; var pair:Number = gridTable.selectedItem.pairNumber; validateDisplayList(); //call back end code to freeze pair //show PnL also } else if(event.detail == Alert.NO){//No // do nothing chkBox.selected = !freezePair; validateDisplayList(); //.setStyle("color","#F7D2AE"); } } /*private function adminFaultHandler(event:FaultEvent):void { if(event.fault != null) { var a:Number = gridTable.selectedItem.toString(); gridTable.alpha = 1; Alert.show(event.fault.toString()); } } */ ]]> </fx:Script> <s:VGroup > <mx:AdvancedDataGrid visible="true" editable="false" id="gridTable" paddingLeft="0" paddingTop="0" paddingBottom="0" width="{this.width}" height="{this.height}" borderColor="#F8F1F1" selectionMode="multipleRows"> <mx:columns> <mx:AdvancedDataGridColumn id="OBH" headerText="OBH #" width="80" dataField="obhNumber" textAlign="center" sortable="true"/> <mx:AdvancedDataGridColumn id ="PairNumber" headerText="Pair #" width="80" dataField="pairNumber" textAlign="center" sortable="true"/> <mx:AdvancedDataGridColumn id="chkBox1" headerText="Pair Control" width="100" editable="false" sortable="false"> <mx:itemRenderer> <fx:Component> <s:MXAdvancedDataGridItemRenderer verticalCenter="0"> <s:HGroup> <mx:HBox horizontalScrollPolicy="off" verticalScrollPolicy="off"> <fx:Script> <![CDATA[ override public function set data(value:Object):void { super.data = value; if (value[selected] != null) { chkBox.selected = Boolean(value[selected]); } validateDisplayList(); } ]]> </fx:Script> <mx:CheckBox selected="{selected}" textAlign="center" id="chkBox" color="#F7D2AE" symbolColor="#0" label="Freeze" click="outerDocument.showWarning(chkBox.selected, chkBox);" enabled="true"/> </mx:HBox> </s:HGroup> </s:MXAdvancedDataGridItemRenderer> </fx:Component> </mx:itemRenderer> </mx:AdvancedDataGridColumn> <mx:AdvancedDataGridColumn headerText="Fetch Profit" width="100" editable="false" sortable="false"> <mx:itemRenderer> <fx:Component> <s:MXAdvancedDataGridItemRenderer> <s:HGroup> <mx:Spacer width = "100%"/> <mx:Button width = "100%" verticalCenter="0" click="outerDocument.fetchProfit(event);" label="Fetch" fontWeight="bold" /> <mx:Spacer width = "100%"/> </s:HGroup> </s:MXAdvancedDataGridItemRenderer> </fx:Component> </mx:itemRenderer> </mx:AdvancedDataGridColumn> <mx:AdvancedDataGridColumn dataField="profit" headerText="Profit" width="70" textAlign="right" editable="false" sortable="true"> <!--mx:itemRenderer> <fx:Component> <s:MXAdvancedDataGridItemRenderer color="white" accentColor="white"> <fx:Script> <![CDATA[ import mx.events.FlexEvent; ]]> </fx:Script> <s:HGroup> <mx:TextArea id="profitArea" editable="true" width = "110" fontWeight="bold" /> </s:HGroup> </s:MXAdvancedDataGridItemRenderer> </fx:Component> </mx:itemRenderer--> </mx:AdvancedDataGridColumn> </mx:columns> </mx:AdvancedDataGrid> </s:VGroup> </mx:Application> -- Alex Harui Flex SDK Team Adobe Systems, Inc. http://blogs.adobe.com/aharui