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>

Reply via email to