Populating Multiple Flex 4.5 ComboBoxes using PHP
我已经四处搜寻,却找不到我问题的答案。使用Flex 4.5和PHP 5时,填充多个组合框的最佳方法是什么?
我正在开发一个Flex应用程序,该应用程序在屏幕上显示大约20个组合框-每个组合显示不同的数据。我希望在应用启动时立即填充所有组合框。我在Flex中使用了默认的"数据/服务"向导,该向导自动创建了将ArrayCollection返回给Flex的PHP。例如,下面是我使用的当前PHP函数,用于填充每个ComboBox:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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; } |
这很好用...除了我必须从Flex提交20个呼叫-每个呼叫为每个组合框返回不同的数据-这会产生大量开销。
我当时想从数据库中返回所有行(使用一个调用),然后使用Flex中的方法轻松解析(e4x?)数据,以专门填充每个组合框。例如,我的数据行可能如下所示:
1 2 3 4 5 6 7 8 | CODE DESCR ------- ----------- Fruit Apple Fruit Orange Drink Soda Drink Water Drink Wine Candy Gummy Bears |
如果在Flex中有某种方式,我可以(轻松地)将ArrayCollection转换为XML,并使用e4x使用诸如" ... lastResult [Food ='Fruit']"之类的东西填充dataProvider。
或
PHP是否以Flex lastResult将是XMLListCollection的方式返回XML(假设这就是我对e4x的需求)?
或
PHP是否已正确返回多维ArrayCollection,我可以在其中直接引用" Fruit"集合?有了这个问题,我尝试了以下PHP代码:
我修改了" $ rows [] = $ row;"到" $ rows [$ rows-> CODE] [] = $ row;"在上面的代码中。
这看起来像是可行的-PHP发送了一个带有Fruit集合,Drink集合等的ArrayCollection(我在Flex中使用"测试操作"时看到了这一点)-但是我收到了Flex错误(TypeError:错误#1034) :类型强制转换失败:尝试引用对象时,无法将[] @ 143f1b29转换为mx.collections.IList):
dataProvider =" ... lastResult.source.Fruit"
或
有没有更有效的方法?
有人有什么想法吗?非常感谢。
请注意,我是Flex的白痴,但是如果我要这样做,我有一个ArrayCollection-好吧,其余的似乎很麻烦:每个组合框都有它自己的数据源;每个组合框都有它自己的数据源。初始化那些数据源(例如,使它们更加简单);遍历ArrayCollection,填充数据源(ArrayCollection列索引与每个数据源的数组索引之间的对应关系当然会非常容易)。至少在我看来,这是您可以做到的。尽管:(