我没有使用datagrid(或ArrayCollection作为dataProvider),所以虽然@Jason Towne的解决方案一般,但它不是我的具体情况的解决方案。
我解决了“不能够删除未提交的项目”通过使用项目而不是ITEMID托管DELETE方法Flex中的数据问题。 Flash Builder的自动生成的ActionScript方法和PHP代码使用itemID作为参数,该参数不适用于数据管理的DELETE,直到记录保存到数据库后。使用实际的项目作为参数在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);