Я искал несколько часов и не нашел ответа на мою проблему.
Я пытаюсь поместить комбинированные списки в таблицу данных, заполненную ДИНАМИЧНЫМИ данными. (Количество и содержание этих комбинированных списков всегда меняются. Я не знаю заранее, сколько существует столбцов, где мне нужно использовать комбинированные списки. Поэтому каждый отдельный комбинированный список получает уникальный поставщик данных, который поступает из внешнего источника, КОГДА программа работает.)
-i нашел МНОГИЕ потоки, обсуждающие эту проблему, но решающие через дрянные файлы mxml, заполняющие комбинированные списки внутри исходного кода вручную. Я хочу отметить, что это не хорошо для меня.
- я нашел лучшее решение, в котором они использовали какой-то специальный обработчик элементов для получения данных из Интернета. (что-то вроде выбора страны), но, к сожалению, этого было недостаточно, потому что число и название стран в мире более или менее статичны, они не меняются. поэтому их класс рендерера не зависел ни от каких параметров основного алгоритма.
но в моей программе я вычисляю данные в своих собственных объектах ActionScript, а затем заполняю их массивом. поэтому в начале я загружаю нужные данные из сети, и когда я получаю ответ на URL-запрос, ПОСЛЕ того, как я начинаю заполнять сетку данных / комбинированный список.
Я могу без проблем заполнить любую сетку данных или комбинированный список, но поместить этот комбинированный список в ячейку сетки данных представляется невозможным.
Может кто-нибудь помочь? это сводит меня с ума. Раньше мне удавалось делать это на нескольких языках: c #, java, даже php + html, но в flex это выглядит слишком сложно, чем должно быть.
EDIT:
я знаю, что такой объем сетевой активности может означать некоторую нагрузку на сервер. я не разработал философию, стоящую за этим, мне просто нужно написать клиента, который соответствует ожиданиям. моя программа выглядит примерно так:
(я хочу переписать любую его часть, просто чтобы эти противные комбо-боксы работали)
=========
файл main.mxml
это основная программа, здесь я обрабатываю некоторые вещи, связанные с входом в систему, и задаю основные свойства дизайна для сетей данных. (например: максимальная ширина, максимальная высота, ограничения макета и т. д.)
ничего интересного, кроме команды, когда я создаю экземпляр класса actionscript, который я написал для заполнения сетки данных.
"..<fx:Script>
<![CDATA[
private var myGrid1:MyGridType;
..
somefunction {
myGrid1 = new MyGridType(theDatagridDefinedBefore, "argumentNeededToFillDataGridsWithUniqueData");
}
]]>
</fx:Script>.."
=========
MyGridType.as file
в конструкторе я вызываю urlrequest с помощью второго аргумента, затем добавляю к нему EventListener. когда данные поступают, обработчик событий запускает функцию-заполнитель: я считываю результаты в массив массивов, а затем делаю его поставщиком данных для сетки данных в первом аргументе.
пока все хорошо.
тут возникает проблема с комбо-боксами. для определенного числа столбцов я создаю свой класс combobox. давайте назовем этот класс «MyComboBoxType».
"..
blablabla = new MyComboBoxType(theDatagridDefinedBefore, param1, param2, param3);"
=========
Файл MyComboBoxType.as
Я делаю почти то же самое, что я делал в классе MyGridType. обратиться за помощью из сети с param1-2-3. когда я получу данные, заполни коллекцию массивов. возможно, установите эту коллекцию массивов как поставщик данных для комбинированного списка. AAAAAA, и теперь я хочу, чтобы коллекция массивов или выпадающий список были в сетке данных "theDatagridDefinedBefore".