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

Reply via email to