如何在填充AdvancedDataGrid之前将XML数据转换为Number

时间:2011-06-16 10:11:09

标签: xml flex type-conversion advanceddatagrid

我导入XML数据以填充AdvancedDataGrid(使用Flex 4.5) 此ADG正确填充数据,列显示正确的信息等。

我想用

总结一下这个ADG
<mx:SummaryRow summaryPlacement="group">
    <mx:SummaryField2 dataField="Cost" label="amount" summaryOperation="SUM">
</mx:SummaryRow>

但是有一个问题!实际上,'Cost'数据被导入为'Strings',这就是为什么我不能做SUM ...我只是得到了一个很好的0! 我想将这些数据转换为Numbers,以便可以处理添加。必须在填写ADG之前完成此转换。

我已经尝试过实现自定义的摘要操作,但不幸的是......

public function calculateSummary(data:Object, field:SummaryField2, rowData:Object):void
{
    var dataField:String = field.dataField;
    var value:Number = Number(rowData[dataField]);
    Alert.show(rowData[dataField]);
    if (!data.hasOwnProperty(dataField))
        data[dataField] = value ;
    else
        data[dataField] += value;   
}

警报始终显示无效消息,数据不会传输到此功能我认为

还有另一件事:用户可以动态地在XML中插入新数据,并且插入必须更新SUM结果。

有人能帮帮我吗?我会继续搜索,如果我发现了什么,我会发布它:D

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将astring转换为执行以下操作的数字:

var myNewNumber : Number = Number(stringValue);

你确切想要在你的代码中做到这一点,我不确定。您绝对可以将XML转换为对象数组,然后将该数组用作dataProvider。我怀疑你也可以把它作为计算总数的过程的一部分。

答案 1 :(得分:0)

如果您正在使用XML,请不要忘记使用“@”来识别属性(@Cost)。

<mx:SummaryRow summaryPlacement="group">
    <mx:SummaryField2 dataField="@Cost" label="amount" summaryOperation="SUM">
</mx:SummaryRow>

您不需要将字符串转换为数字,框架已在内部执行。