2010-09-14 68 views
2

以下是我想要做的: 我想要一个数据网格来显示每行的总值。比方说,我有一个数据网格。在每一行的这个数据网格中,我有五列。五列中有四列供用户输入数字。第五列是“总计”列,它是计算用户输入数字的那一行上的前四列的公式的结果。在datagrid中创建“总计”列flex

例如:

行1:(第1列)200 +(第2列)300 - (第3列)100 +(第4列)90 =(TOTAL COLUMN)490

第2列:(第1列)400 +(第2列)300 - (第3列)50 +(第4列)90 =(TOTAL柱)740

ROW 3:等...

伊夫一直在这几个小时有没有人有任何建议如何做到这一点?

任何帮助,非常感谢!

回答

6

使用labelFunction

<mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}"> 
    <mx:columns> 
     <mx:DataGridColumn dataField="d1" headerText="Data 1"/> 
     <mx:DataGridColumn dataField="d2" headerText="Data 2"/> 
     <mx:DataGridColumn dataField="d3" headerText="Data 3"/> 
     <mx:DataGridColumn labelFunction="getTotal" headerText="Total" /> 
    </mx:columns> 
</mx:DataGrid> 

脚本:

public function getTotal(item:Object, column:DataGridColumn):String 
{ 
    var sum:Number = item.d1 + item.d2 + item.d3; 
    return sum.toString(); 
} 
+0

+1,美观大方的回答言简意赅。 – 2010-09-15 19:16:28

1

将一个总值添加到您在array中传递的对象作为dataprovider。在通过循环所有元素来显示它们之前计算总数。

1

你可以写一个labelFunction并在那里做计算,所以你不需要改变你的dataProvider。

<mx:DataGridColumn headerText="total" 
      labelFunction="{myLabelFunc}"/> 

和功能:

public static function myLabelFunc(item:Object, column:DataGridColumn):String { 
    // do your calculation 
    return result; 
} 
2

虽然它似乎是太迟了一个新的评论,我有补充一点: 如果您想在每次更改其他列的值时更新总列,则必须在其中一个值之前添加:new Number

var sum:Number = new Number(item.d1) + new Number(item.d2) + new Number(item.d3);