Я искал вокруг и не мог найти ответ на свой вопрос.Каков наилучший способ заполнить несколько комбинированных списков при использовании Flex 4.5 и PHP 5?
Я занимаюсь разработкой приложения Flex, которое отображает на экране около 20 комбинированных списков, в каждом из которых отображаются разные данные.Я хотел бы, чтобы все выпадающие списки заполнялись сразу при запуске приложения.Я использовал мастер по умолчанию «Data / Service» во Flex, который автоматически создает PHP, который возвращает ArrayCollection во Flex.Например, ниже приведена текущая функция PHP, которую я использую, которая заполняет каждый ComboBox:
public function getListsByCODE($code) {
$stmt = mysqli_prepare($this->connection, "SELECT a.IDCODE, a.CODE, a.DESCR, a.NOTES FROM DROPDOWN_VW a WHERE (a.CODE = ?)");
$this->throwExceptionOnError();
mysqli_stmt_bind_param($stmt, 's', $code);
$this->throwExceptionOnError();
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->IDCODE, $row->CODE, $row->DESCR, $row->NOTES);
while (mysqli_stmt_fetch($stmt)) {
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->IDCODE, $row->CODE, $row->DESCR, $row->NOTES);
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
}
Это работает нормально ... за исключением того, что мне нужно отправить 20 вызовов из Flex - каждый вызов возвращает разные данные для каждого комбинированного списка -что создает огромные накладные расходы.
Я думал о том, чтобы вернуть ВСЕ строки из базы данных (используя один вызов), а затем использовать метод во Flex, чтобы легко проанализировать (e4x?) данные, чтобы специфически заполнить каждый комбинированный список.Например, мои строки данных могут выглядеть следующим образом:
CODE DESCR
------- -----------
Fruit Apple
Fruit Orange
Drink Soda
Drink Water
Drink Wine
Candy Gummy Bears
Если есть что-то во Flex, где я могу (легко) преобразовать ArrayCollection в XML и использовать e4x для заполнения dataProvider чем-то вроде "...lastResult [Food = 'Fruit'] "
или
Есть ли PHP, возвращающий XML таким образом, что Flex lastResult будет XMLListCollection (при условии, что это то, что мне нужно для e4x)?
или
Правильно ли PHP возвращает многомерную коллекцию ArrayCollection, где я могу напрямую ссылаться на коллекцию "Fruit"?С этим вопросом я попробовал следующий код PHP:
Я изменил "$ row [] = $ row;"на "$ row [$ row-> CODE] [] = $ row;"в приведенном выше коде.
Это выглядело так, как будто это работает - PHP отправляет ArrayCollection с коллекцией Fruit, Drink и так далее (я вижу это при использовании «Test Operation» во Flex) - но я получаюОшибка Flex (ошибка типа: ошибка № 1034: сбой приведения типа: невозможно преобразовать [] @ 143f1b29 в mx.collections.IList) при попытке ссылки на объект:
dataProvider = "... lastResult.source.Fruit"
или
Есть ли более эффективный способ?
У кого-нибудь есть идеи?Большое спасибо.