AdvancedDataGrid에서 그룹별 summary 지정하기
Heirachy 구조의 경의 해당 그룹 노드에 summary값을 저장하기 위해서는 개별 SummaryField와 개별 SummaryRow를 지정 해 주어야 자체 합계를 다시 더 하지 않는다.
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" backgroundColor="#ffffff" >
<mx:RemoteObject showBusyCursor="true" id="AdminDBHandler" destination="com.penta.ams.database.AdminDBHandler">
<mx:method name="putMainGrid" result="getTrxDetailViewTableBizDataResultHandler(event)"
fault="faultHandler(event)">
<mx:arguments>
<Type/>
</mx:arguments>
</mx:method>
</mx:RemoteObject>
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.Grouping;
import mx.collections.GroupingCollection;
import mx.collections.GroupingCollection2;
import mx.collections.GroupingField;
import mx.collections.HierarchicalData;
import mx.collections.IHierarchicalCollectionView;
import mx.collections.SummaryField2;
import mx.collections.SummaryRow;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
[Bindable]
private var dataGColl:GroupingCollection2;
private var dataGrp:Grouping ;
private var grpField1:GroupingField;
private var grpField2:GroupingField;
private var grpField3:GroupingField;
private var sumRow1:SummaryRow;
private var sumRow2:SummaryRow;
private var sumRow3:SummaryRow;
private var sumField1:SummaryField2;
private var sumField2:SummaryField2;
private var sumField3:SummaryField2;
private var sumField4:SummaryField2;
private var sumField11:SummaryField2;
private var sumField12:SummaryField2;
private var sumField13:SummaryField2;
private var sumField14:SummaryField2;
private var sumField21:SummaryField2;
private var sumField22:SummaryField2;
private var sumField23:SummaryField2;
private var sumField24:SummaryField2;
private var isFirst:Boolean;
private var count:int = 0;
private function grpOnjFunc(value:String):Object{
// we need to assign the same uid for same grouped Objects
// use count or value + count
return {uid:value + count++};
}
public function initRemoting():void {
isFirst = true;
dataGColl = new GroupingCollection2();
dataGColl.source = new ArrayCollection();
dataGrp = new Grouping();
dataGrp.groupingObjectFunction = grpOnjFunc;
sumRow1 = new SummaryRow();
sumRow2 = new SummaryRow();
sumRow3 = new SummaryRow();
grpField1 = new GroupingField("jijum_Name");
grpField2 = new GroupingField("busGroup_Name");
grpField3 = new GroupingField("bus_Name");
sumRow1.summaryPlacement = "group";
sumRow2.summaryPlacement = "group";
sumRow3.summaryPlacement = "group";
sumField1 = new SummaryField2("curTrx","SUM");
sumField1.label = "curTrxSum";
sumField2 = new SummaryField2("curRestime","SUM");
sumField2.label = "curRestimeSum";
sumField3 = new SummaryField2("totalTrx","SUM");
sumField3.label = "totalTrxSum";
sumField4 = new SummaryField2("totalErr","SUM");
sumField4.label = "totalErrSum";
sumField11 = new SummaryField2("curTrx","SUM");
sumField11.label = "curTrxSum";
sumField12 = new SummaryField2("curRestime","SUM");
sumField12.label = "curRestimeSum";
sumField13 = new SummaryField2("totalTrx","SUM");
sumField13.label = "totalTrxSum";
sumField14 = new SummaryField2("totalErr","SUM");
sumField14.label = "totalErrSum";
sumField21 = new SummaryField2("curTrx","SUM");
sumField21.label = "curTrxSum";
sumField22 = new SummaryField2("curRestime","SUM");
sumField22.label = "curRestimeSum";
sumField23 = new SummaryField2("totalTrx","SUM");
sumField23.label = "totalTrxSum";
sumField24 = new SummaryField2("totalErr","SUM");
sumField24.label = "totalErrSum";
sumRow1.fields = [sumField1, sumField2, sumField3, sumField4];
sumRow2.fields = [sumField11, sumField12, sumField13, sumField14];
sumRow3.fields = [sumField21, sumField22, sumField23, sumField24];
grpField1.summaries = [sumRow1];
grpField2.summaries = [sumRow2];
grpField3.summaries = [sumRow3];
dataGrp.fields = [ grpField1, grpField2,grpField3];
dataGColl.grouping = dataGrp;
AdminDBHandler.putMainGrid("1");
}
public function reRemoting():void{
AdminDBHandler.putMainGrid("1");
}
/* public function getTrxDetailViewTableBizDataResultHandler(event:ResultEvent):void
{
var resultSet:ArrayCollection = event.result as ArrayCollection;
dataGColl.source = resultSet;
dataGrp.fields = [ new GroupingField("jijum_Name"), new GroupingField("busGroup_Name"), new GroupingField("bus_Name")];
dataGColl.grouping = dataGrp;
trxTable.dataProvider = dataGColl;
dataGColl.refresh();
} */
public function getTrxDetailViewTableBizDataResultHandler(event:ResultEvent):void
{
var resultSet:ArrayCollection = event.result as ArrayCollection;
count = 0;
if(isFirst){
dataGColl.source = resultSet;
trxTable.dataProvider = dataGColl;
trxTable.validateNow();
isFirst = false;
dataGColl.refresh();
}
else{
var openNodes:Object = IHierarchicalCollectionView(trxTable.dataProvider).openNodes;
var newDataGColl:GroupingCollection2 = new GroupingCollection2();
newDataGColl.source = resultSet;
newDataGColl.grouping = dataGrp;
newDataGColl.refresh();
trxTable.dataProvider = newDataGColl;
trxTable.validateNow();
IHierarchicalCollectionView(trxTable.dataProvider).openNodes = openNodes;
}
}
public function faultHandler(event:FaultEvent):void
{
mx.controls.Alert.show(String(event.message));
}
public function myStyleFunc(data:Object, col:AdvancedDataGridColumn):Object
{
if (data["status"] == "PRICING")
return {color:0xFF0000 , fontWeight:"bold" , backgroundColor:0xFF0000};
// Return null if the Artist name does not match.
return null;
}
]]>
</mx:Script>
<mx:NumberFormatter useThousandsSeparator="true" id="nFormatter"/>
<mx:AdvancedDataGrid id="trxTable" x="0" y="0" visible="true" designViewDataType="tree" width="100%" height="100%" color="0x000000" displayItemsExpanded="false" sortExpertMode='true'>
<mx:groupedColumns>
<mx:AdvancedDataGridColumn headerText="지점명" dataField="untBus_Name" />
<mx:AdvancedDataGridColumn headerText="처리건수" dataField="curTrx" itemRenderer="com.penta.flex4.components.itemrenderer.TriangleItemRenderer" />
<mx:AdvancedDataGridColumn headerText="응답시간" dataField="curRestime" itemRenderer="com.penta.flex4.components.itemrenderer.TriangleItemRenderer" />
<mx:AdvancedDataGridColumn headerText="누적건수" dataField="totalTrx" itemRenderer="com.penta.flex4.components.itemrenderer.TriangleItemRenderer" />
<mx:AdvancedDataGridColumn headerText="누적에러" dataField="totalErr" itemRenderer="com.penta.flex4.components.itemrenderer.TriangleItemRenderer" />
</mx:groupedColumns>
</mx:AdvancedDataGrid>
</mx:Canvas>