组合框根据用户选择执行不同的公式

时间:2010-09-28 04:33:48

标签: flex datagrid flex3 combobox

我有一个数据网格,用户为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.我知道它说我的功能没有返回值,但我不明白为什么?任何澄清都非常受欢迎。

1 个答案:

答案 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; 
}