[英]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.