我到处找,都找不到我的问题的答案。在使用Flex 4.5和PHP 5时,填充多个组合框的最佳方式是什么?
我正在开发一个Flex应用程序,在屏幕上显示大约20个组合框-每个组合显示不同的数据。我希望在应用程序启动时立即填充所有的组合框。我在Flex中使用了默认的“数据/服务”向导,它会自动创建将ArrayCollection返回给Flex的PHP。例如,下面是我当前使用的填充每个ComboBox的PHP函数:
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?)通过数据来专门填充每个组合框。例如,我的数据行可能如下所示:
CODE DESCR
------- -----------
Fruit Apple
Fruit Orange
Drink Soda
Drink Water
Drink Wine
Candy Gummy Bears在Flex语言中,我可以(轻松地)将ArrayCollection转换为XML语言,并使用e4x将类似于"...lastResultFood='Fruit'“的内容填充到dataProvider中。
或
让PHP以一种使Flex成为XMLListCollection的方式返回XML (假设这就是我在e4x中需要的)?
或
让PHP正确返回一个我可以直接引用“ArrayCollection”集合的多维Fruit?对于这个问题,我尝试了以下PHP代码:
我在上面的代码中将“$rows=$row;”修改为"$rows$rows-> code =$row;“。
这看起来很好用- PHP发送了一个带有水果集合、饮料集合等的ArrayCollection (我在Flex中使用‘测试操作’时看到了这一点)-但在尝试引用对象时得到了一个TypeError (TypeError: error #1034:类型强制失败:无法将[]@143f1b29转换为mx.collections.IList):
dataProvider="...lastResult.source.Fruit“
或
有没有更有效的方法?
有谁有什么想法吗?非常感谢。
发布于 2011-12-09 00:01:05
请注意,我是一个Flex的笨蛋,但是如果我要这样做,并且我有一个ArrayCollection -好吧,其余的看起来像蛋糕:每个组合框都有它自己的数据源;初始化这些数据源(例如,为了简单起见,它们的数组);迭代ArrayCollection,填充数据源(当然,ArrayCollection列索引和每个数据源的数组索引之间的对应关系将使这非常容易)。至少在我看来,这是你可以做到的。可能这个响应太晚了:(
https://stackoverflow.com/questions/7690583
复制相似问题