Saturday, 13 April 2013

Treeview Drilldown.mxml

The following code is used to drilldown data and display data in a treeview format in FLEX.



<?xml version="1.0" encoding="utf-8"?>
<s: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" minWidth="955" minHeight="600"
               creationComplete="application1_creationCompleteHandler(event)">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script source="\\Common\\CommonScripts.as"/>
    <fx:Script>
        <![CDATA[
            import COMMON.*;
           
            import mx.collections.ArrayCollection;
            import mx.collections.IHierarchicalCollectionView;
            import mx.events.FlexEvent;

                [Bindable]
                private var AdvGrdArrCol:ArrayCollection= new ArrayCollection
                private var ParentArrCol:ArrayCollection = new ArrayCollection
                private var xml:String = "";
                private var TQty:int;
                private var TSal:int;
                private var Qty:int;
                private var Sal:int;       

                protected function recurse(o:Object):uint
                {
                    // grab the general list, for commodity
                    var view:IHierarchicalCollectionView = AdDtGv.dataProvider as IHierarchicalCollectionView;
                    // I count as 1 if we're recursing through me
                    var total:uint = 1;
               
                    // check if I'm open
                    for each (var e:Object in view.openNodes)
                    {
                        if (e == o)
                        {
                            // if so I need to add my children and their families
                            for each (var c:Object in o.children)
                            total += recurse(c);
                        }
                    }
                    // if not I'm done, just counting myself
               
                    return total
                }
           
                protected function application1_creationCompleteHandler(event:FlexEvent):void
                {
                    useWebService("Test_Test", "ADVGRD", "", "", "", "", "", "");
                }

                private function WebService_Result(event:Object):void
                {
                    AdvGrdArrCol = event.result.Tables.Table.Rows;
                    var TmpAct:String = "";
                    var TmpActNew:String = "";
                    for (var Loop:int=0; Loop<=AdvGrdArrCol.length-1;Loop++)
                    {
                        var obj:Object = new Object();
                        var tmpArr:ArrayCollection = new ArrayCollection();
                        var CustArr:ArrayCollection = new ArrayCollection();
                        if (TmpAct != AdvGrdArrCol[Loop].ACT)
                        {
                        TQty = 0;
                        TSal = 0;
                        obj['ACT'] = AdvGrdArrCol[Loop].ACT
                        TmpAct = AdvGrdArrCol[Loop].ACT
                        for (var i:int=0; i<=AdvGrdArrCol.length-1;i++)
                        {
                            Qty = 0;
                            Sal = 0;
                            if (TmpAct == AdvGrdArrCol[i].ACT)
                            {
                                if (TmpActNew != AdvGrdArrCol[i].CUST)
                                {   
                                    tmpArr = new ArrayCollection();
                                    var objnew:Object = new Object();
                                    objnew['ACT'] = AdvGrdArrCol[i].CUST
                                    TmpActNew = AdvGrdArrCol[i].CUST
                                    for (var j:int=0; j<=AdvGrdArrCol.length-1;j++)
                                    {
                                        if (TmpActNew == AdvGrdArrCol[j].CUST)
                                        {
                                            var TmpObj:Object = new Object();
                                            TmpObj['PRD'] = AdvGrdArrCol[j].PRD
                                            TmpObj['QTY'] = AdvGrdArrCol[j].QTY
                                            TmpObj['VAL'] = AdvGrdArrCol[j].VAL
                                            tmpArr.addItem(TmpObj);
                                            TQty = TQty + AdvGrdArrCol[j].QTY
                                            TSal = TSal + AdvGrdArrCol[j].VAL
                                            Qty = Qty + AdvGrdArrCol[j].QTY
                                            Sal = Sal + AdvGrdArrCol[j].VAL
                                        }
                                    }
                                    objnew['QTY'] = Qty
                                    objnew['VAL'] = Sal
                                    objnew['children'] = tmpArr
                                    CustArr.addItem(objnew);
                                    obj['QTY'] = TQty
                                    obj['VAL'] = TSal
                                    obj['children'] = CustArr
                                }
                            }
                        }
                        ParentArrCol.addItem(obj)
                        }
                    }
                }       
        ]]>
    </fx:Script>
        <mx:AdvancedDataGrid x="30" y="25" id="AdDtGv" height="300">
            <mx:dataProvider>
                <mx:HierarchicalData source="{ParentArrCol}"/>
            </mx:dataProvider>
        <mx:columns>
            <mx:AdvancedDataGridColumn headerText="Activity" dataField="ACT" width="150"/>
            <mx:AdvancedDataGridColumn headerText="Product" dataField="PRD" width="200"/>
            <mx:AdvancedDataGridColumn headerText="Quantity" dataField="QTY"/>
            <mx:AdvancedDataGridColumn headerText="SalesValue" dataField="VAL"/>
        </mx:columns>
    </mx:AdvancedDataGrid>
</s:Application>

No comments:

Post a Comment