在datagrid flex中创建“total”列

时间:2010-09-14 05:11:47

标签: flex datagrid flex3 row

这是我想要做的:  我想要一个显示每行总值的数据网格。让我们说例如我有一个数据网格。在每行的数据网格中,我有五列。在五列中,四列是供用户输入数字的。第五列是“总计”列,它是计算用户输入数字的那一行上前四列的公式的结果。

示例:

第1行:(第1栏)200 +(第2栏)300 - (第3栏)100 +(第4栏)90 =(总栏)490

第2行:(第1栏)400 +(第2栏)300 - (第3栏)50 +(第4栏)90 =(总栏)740

行3:等等......

我一直在研究这个问题几个小时有没有人对如何做到这一点有任何建议?

非常感谢任何帮助!

4 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:2)

虽然新评论似乎为时已晚,但我必须补充一点: 如果您想在每次用户更改其他列的值时更新总列,则必须在其中一个值之前添加:new Number

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

答案 2 :(得分:1)

为数组中传递的对象添加总值作为dataprovider。通过循环遍历所有元素,在显示之前计算总数。

答案 3 :(得分:1)

您可以编写labelFunction并在那里进行计算,因此您无需更改dataProvider。

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

和功能:

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