簡體   English   中英

顯示arraycollection中的行總和值-Adobe Flex

[英]Display total sum of rows values in arraycollection - Adobe Flex

我想在arraycollection中顯示行值的總和。 例如:

Definition     Value
Product 1      20.00
Product 2      50.00
Product 3      30.00

Total          100.00

我有以下代碼:

    <mx:DataGrid id="srcgrid">
        <mx:columns>
            <mx:DataGridColumn dataField="Definition"/>
            <mx:DataGridColumn dataField="Value"/>
        </mx:columns>    
    </mx:DataGrid>

    <s:Form>
        <s:FormItem label="Total">
            <s:Label text="{total()}"/>
        </s:FormItem>
    </s:Form>

和腳本:

public function total():String {
    var i:Number = 0;
    for each(var obj:Object in ArrayCollection(DataGrid(srcgrid).dataProvider)){
        i = i + obj.Value;
    }

    return i.toString();
}

任何想法?

提前致謝

dataProvider內部沒有任何內容之前,調用了total()函數。
srcgrid.dataProvider也可以作為Object循環

<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" applicationComplete="addInitData(event)">

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
        <mx:DataGrid id="srcgrid">
        <mx:columns>
            <mx:DataGridColumn dataField="Definition"/>
            <mx:DataGridColumn dataField="Value"/>
        </mx:columns>    
    </mx:DataGrid>

    <s:Form x="250">
        <s:FormItem label="Total">
            <s:Label id="total"/>
        </s:FormItem>
    </s:Form>
    <fx:Script>
        <![CDATA[
            import flash.events.Event;
            import mx.collections.ArrayList;

            private function addInitData(e:Event = null):void{
                var dataProvider:ArrayList = new ArrayList();
                for (var i:int = 0; i < 12; i++){
                    dataProvider.addItem({Definition : 'item_' + i, Value : i});                    
                }
                srcgrid.dataProvider = dataProvider;
                updTotal();
            }

            private function updTotal():void{
                var sum:Number = 0;
                for (var k:String in srcgrid.dataProvider){
                    sum += srcgrid.dataProvider[k]['Value'];
                }
                total.text = sum.toString();
            }
        ]]>
    </fx:Script>
</s:Application>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM