Flex Datagrid 选择多行并发送到 amfphp 后端

Posted

技术标签:

【中文标题】Flex Datagrid 选择多行并发送到 amfphp 后端【英文标题】:Flex Datagrid select multiple rows and send to amfphp backend 【发布时间】:2012-11-12 23:08:17 【问题描述】:

我正在互联网上的论坛上研究一些解决方案以将 ArrayCollection 发送到 Amfphp,但我没有找到很好的响应,以及如何访问 PHP 端的数组以包含到 mysql 表中。

我的问题:

我有一个填充了一些名称和电子邮件的 Flex 数据网格,我想创建一种方法来允许用户创建一个组并选择名称作为该组的一部分。我在 Flash Builder 调试器中看到数据以 ArrayCollection 的形式发送(也从 Vector 转换为 Object),问题仍然在于如何在 PHP 端访问该数组。

这是发送到 AmfPHP 的 ArrayCollection:

[0] Object (@cf87311)   
[1] Object (@d4bfcb9)   
[2] Object (@d4d3479)   

这里是数组的键和值:

[0] Object (@cf87311)   
    id  "2" 
    nome    "David" 
    username    "david" 
[1] Object (@d4bfcb9)   
    id  "3" 
    nome    "jose"  
    username    "jose@jose.com" 
[2] Object (@d4d3479)   
    id  "4" 
    nome    "joao"
    username    "joao@joao.com" 

有谁知道我必须做什么才能访问此数组中的“id”字段?

最好的问候!

拉斐尔·塔瓦雷斯

【问题讨论】:

【参考方案1】:

AMFPHP 会将您的 actionscript 对象转换为 PHP 对象。将arraycollection 作为一个参数传递。在 PHP 方面,您可以将其用作:

function myfunction( $Object_param )

   foreach( $Object_param as $Object )
   
       echo $Object[ 'id' ];
       echo $Object[ 'nome' ];
   

等等。

【讨论】:

感谢您的帮助!我现在已经测试过,它不起作用。没有为数组的每个组件分配 $Object['id'] 对象的值。我以这种方式将向量转换为对象: var temp:ArrayCollection = new ArrayCollection(); var selIndices:Vector. = datagrid_grupo_usuarios.selectedIndices; var selItems:Vector. = datagrid_grupo_usuarios.selectedItems; var numItems:Number = selIndices.length; for (var i:Number = 0; i 你是如何将 AC 传递给 php 的? protected function button_criar_grupo_clickHandler(event:MouseEvent):void var temp:ArrayCollection = new ArrayCollection(); var selIndices:Vector.<int> = datagrid_grupo_usuarios.selectedIndices; var selItems:Vector.<Object> = datagrid_grupo_usuarios.selectedItems; var numItems:Number = selIndices.length; for (var i:Number = 0; i<numItems; i++) temp.addItem(selItems[i]); var params:Object = new Object params.usuarios=temp; criar_grupo.getOperation("retornaCriaGrupo").arguments = params; criar_grupo.getOperation("retornaCriaGrupo").send(); <s:RemoteObject id="criar_grupo" destination="amfphp" source="Login" showBusyCursor="true"> <s:method name="retornaCriaGrupo" result="retornaCriaGrupo(event)" fault="onFault(event)"> <s:arguments> <!-- <nome_grupo></nome_grupo> --> <usuarios></usuarios> <!--<usuario></usuario> --> </s:arguments> </s:method> </s:RemoteObject> PHP函数public function retornaCriaGrupo($Object_param) $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD) or die(mysql_error()); mysql_select_db( DATABASE_NAME ); foreach($Object_param as $Object=>$value) $query="insert into grupo_usuario (id_grupo,id_usuario) values ('1','".$Object[ 'id' ]."')"; $result = mysql_query($query,$mysql); if ($result) return 1; else return 999;

以上是关于Flex Datagrid 选择多行并发送到 amfphp 后端的主要内容,如果未能解决你的问题,请参考以下文章

EasyUI datagrid 如何默认选择多行

WPF DataGrid 如何对选择的多行进行删除

复制 + 粘贴出 Flex DataGrid 控件

WPF DataGrid怎么实现多行选中,不能使用CheckBox

以编程方式在 WPF DataGrid 中选择多行

复选框上的多行选择和单击 MUI DataGrid 中的行时的单选