Выделение в выпадающем списке внутри сетки данных - PullRequest
1 голос
/ 02 марта 2011

У меня есть датагрид. В этой таблице данных у меня есть редактор элементов списка. Эта сетка данных также имеет несколько столбцов, где пользователь вводит числа в каждом столбце. Затем эти числа рассчитываются по формуле, где сумма указывается в столбце «итого». В этом комбинированном окне пользователь может выбирать из двух вариантов, и каждый параметр имеет свою формулу для вычисления введенных чисел. Я хочу, чтобы, когда пользователь выбирает «вариант 1», для расчета использовалась одна формула, когда «вариант 2» выбирается пользователем, а для расчета используется формула 2.

Вот пример:

Опция Combobox 1 (формула 1) выбирается пользователем = (Столбец2 - Столбец1) x column3 = столбец "total"

Вариант комбинированного списка 2 (формула 2) выбирается пользователем = (Столбец1 - Столбец2) x column3 = столбец "total"

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

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Прослушайте событие комбобокса change и выполните вычисление формулы в обработчике change в соответствии с selectedItem.

public function changeEventHandler(event:Event){
   if(ComboBox(evt.target).selectedItem.label == forumla1) {
      //logic
   } else if(ComboBox(evt.target).selectedItem.label == formula2) {
      //logic
   } else {
      //do nothing
   }
}
0 голосов
/ 02 марта 2011

Это интересно. Вы не можете добавлять слушателей напрямую, потому что средства визуализации элементов используются повторно и не сохраняют свою идентичность. Некоторые мысли по проблеме:

  • когда выбранный элемент в поле со списком изменяется, он отправляет событие всплытия EVENT.CHANGE.
  • Вы должны сделать пользовательский рендер для вычисляемых столбцов. Когда средство рендеринга добавлено в сетку данных (используйте EVENT.ADDED), используйте свойство владельца (которое должно быть сеткой данных), чтобы добавить прослушиватель в EVENT.CHANGE. Убедитесь, что вы получаете это событие (например, измените текст рендерера на «получил»).
  • теперь все ваши вычисленные ячейки получают уведомление, когда любой комбинированный список изменяется. Во-первых, вам нужно отбросить события из строк, отличных от строки элемента. Чтобы сделать это, средство визуализации должно знать свой собственный rowIndex - см. Создание пользовательских средств визуализации List , элемент 2. Сравните выбранный индекс rowIndex и datagrid, если они не совпадают.
  • теперь у вас есть поле со списком в event.target, rowIndex и datagrid - этого должно быть достаточно для получения необходимой формулы и данных из столбцов datagrid.
...