我有一个数据网格,用户为3个不同的列放入不同的数字。然后在用户输入每列的每个值之后计算这些值。我的数据网格中也有一个组合框组件。我想要这个组合框做的是根据用户选择的内容执行不同的数学公式。例如,在组合框中,如果用户选择“Long”(组合框中的第一个选项),则执行Column1 *(col2-Col3)-col4 = total column或者如果用户选择“Short”(组合框中的第二个选项) )它执行col1 *(Col3-col2)+ column4 =总列。我该怎么办?我尝试了一些似乎没有用的不同想法,所以任何例子或建议都会受到高度赞赏。
public function getTotal(item:Object, column:DataGridColumn):String
{
switch(comboBox)
{
case "Long":
var sum:int = item.quantity*(item.exit-item.entry)-item.commission;
return currencyFormatter.format(sum);
case "Short":
sum = item.quantity*(item.entry-item.exit)-item.commission;
return currencyFormatter.format(sum);
}
}
我认为你给了我并使用了函数的参数但是 就像我之前说的那样,我一直遇到错误1170.我知道它说我的功能没有返回值,但我不明白为什么?任何澄清都非常受欢迎。
答案 0 :(得分:0)
你的问题有点令人困惑。用户如何“输入”随后计算的“不同值”用户通常不会输入计算值!
也就是说,听起来你需要一个大的switch语句来计算值。
switch(comboBox.selectedItem)
{
case ""ong":
calculatedValue = Column1*(col2-Col3)-col4;
break;
case "Short":
calculatedValue = col1*(Col3-col2)+column4;
break;
}
我假设DataGrid中显示的所有值都与为该行创建的特定对象相关。您可以将计算函数放在caluclated列的渲染器中,并直接引用对象的dataProvider中的那些项:
switch(data['comboBoxSelectedItem'])
{
case ""ong":
data['calculatedValue'] = data['Column1Value']*(data['col2Value']-data['Col3Value'])-data['col4Value'];
break;
case "Short":
data['calculatedValue'] = data['col1Value']*(data['Col3Value']-data['col2Value'])+data['column4Value'];
break;
}