комбинированный список различных формул по выбору пользователя - PullRequest
0 голосов
/ 28 сентября 2010

У меня есть сетка данных, в которой пользователи вводят разные числа для 3 разных столбцов.Эти значения затем рассчитываются после того, как пользователь вводит каждое значение для каждого столбца.У меня также есть компонент combobox внутри моей сетки данных.Я хочу, чтобы этот комбинированный список выполнял другую математическую формулу в зависимости от того, что выбрал пользователь.Например, в выпадающем списке, если пользователь выбирает «Длинный» (первая опция в выпадающем списке), он выполняет Column1 * (col2-Col3) -col4 = total column или если пользователь выбирает «Короткий» (второй параметр в выпадающем списке) он выполняет 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 голосов
/ 28 сентября 2010

Ваш вопрос немного сбивает с толку. Как пользователь может "вычислять разные значения", которые затем рассчитываются "Пользователи обычно не вводят вычисленные значения!

Тем не менее, похоже, что вам нужен большой оператор switch для вычисления значений.

switch(comboBox.selectedItem) 
{ 
    case ""ong": 
        calculatedValue = Column1*(col2-Col3)-col4; 
        break; 
    case "Short": 
        calculatedValue = col1*(Col3-col2)+column4; 
        break; 
}

Я предполагаю, что все значения, отображаемые в вашей DataGrid, относятся к конкретному объекту, созданному для этой строки. Вы можете поместить свою функцию вычисления в средство визуализации для своего вычисляемого столбца и напрямую ссылаться на эти элементы 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; 
}
...