Заполнение нескольких комбинированных списков Flex 4.5 с использованием PHP - PullRequest
0 голосов
/ 07 октября 2011

Я искал вокруг и не мог найти ответ на свой вопрос.Каков наилучший способ заполнить несколько комбинированных списков при использовании 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"

или

Есть ли более эффективный способ?

У кого-нибудь есть идеи?Большое спасибо.

1 Ответ

0 голосов
/ 08 декабря 2011

Я идиот из Flex, заметьте, но если бы я сделал это, и у меня была ArrayCollection - ну, остальное кажется пирогом: у каждого поля со списком будет свой собственный источник данных;инициализировать эти источники данных (например, их массив для упрощения);итерируйте ArrayCollection, заполняя источники данных (соответствие между индексом столбца ArrayCollection и индексом массива каждого источника данных, конечно, сделало бы это очень простым).По крайней мере, мне кажется, вот как ты мог это сделать.Вероятно, этот ответ слишком поздно, хотя: (

...