Apache flex 使用Flex数据管理和PHP时出现问题

Apache flex 使用Flex数据管理和PHP时出现问题,apache-flex,flex4,Apache Flex,Flex4,我正在使用Flash Builder 4.5 for PHP中的工资管理系统。我使用的是Flex数据管理系统。我有以下几个问题: 当我将一个项目添加到数据网格并没有提交它时,我无法删除它。这是可以理解的,因为只有当项目在数据库中时,delete才起作用,并且在我将项目提交到数据库之前,我不会获取该项目的id主键。 当我删除项时,它应该从数据网格中删除,这可以通过从数据网格的数据提供程序中删除项来实现,但问题是当我提交它时,它会保存到数据库中。我找不到解决这个问题的办法 什么是Flex4的好书/教

我正在使用Flash Builder 4.5 for PHP中的工资管理系统。我使用的是Flex数据管理系统。我有以下几个问题:

当我将一个项目添加到数据网格并没有提交它时,我无法删除它。这是可以理解的,因为只有当项目在数据库中时,delete才起作用,并且在我将项目提交到数据库之前,我不会获取该项目的id主键。 当我删除项时,它应该从数据网格中删除,这可以通过从数据网格的数据提供程序中删除项来实现,但问题是当我提交它时,它会保存到数据库中。我找不到解决这个问题的办法


什么是Flex4的好书/教程,重点介绍PHP和Flex企业应用程序开发,并用示例解释应用程序开发?

以下是我在这种情况下所做的工作。对于我的dataProvider中尚未保存但ID为0或已删除的行,我只需使用以下方法删除它们:

myArrayCollection.removeItemAt(myArrayCollection.getItemIndex(myDataGrid.selectedItem));

这样,任何被删除的行将永远不会到达后端。

我没有使用datagrid或ArrayCollection作为数据提供程序,因此尽管@Jason Towne的解决方案总体上是可行的,但它不是针对我的特定情况的解决方案

我解决了“无法删除未提交项”的问题,方法是在Flex中使用item而不是itemID作为数据管理的delete方法。FlashBuilder自动生成的ActionScript方法和PHP代码使用itemID作为参数,直到记录保存到数据库后,该参数才适用于数据管理删除。在DELETE方法中将实际项引用用作参数可以删除已提交和未提交的更改。然后必须修改PHP代码

我使用服务器端键入,因此修改后的PHP代码与FB自动生成的PHP代码非常相似,如下所示:

/**
 * Deletes the item corresponding to the passed primary key value from 
 * the table. Note: NOT using primary key anymore - use item reference.
 *
 * Add authorization or any logical checks for secure access to your data 
 *
 * @param MessageScheduleItem $item
 * @return void
 */
public function delete_messageScheduleItem($item) {

    $stmt = mysqli_prepare($this->connection, "DELETE FROM $this->tablename WHERE ID = ?");
    $this->throwExceptionOnError();

    mysqli_stmt_bind_param($stmt, 'i', $item->ID);
.
.
... etc.
然后,Flex代码:

messageScheduleItemService.delete_messageScheduleItem(item);