Проблема с управлением данными Flex и PHP - PullRequest
0 голосов
/ 02 июня 2011

Я работаю с системой управления зарплатами в Flash Builder 4.5 для PHP. Я использую систему управления данными Flex. У меня есть несколько вопросов, которые рассматриваются ниже:

  1. Когда я добавляю элемент в сетку данных и не фиксирую его, я не могу удалить его. Это понятно, потому что удаление работает только в том случае, если элемент находится в базе данных, и я не получаю идентификатор (первичный ключ) для элемента, пока не передам его в базу данных.

Когда я удаляю элемент, он должен быть удален из сетки данных (что может быть достигнуто путем удаления элементов из провайдера данных сетки данных), но проблема заключается в том, когда я фиксирую его - он сохраняется в базе данных. Я не могу найти решение этой проблемы.

Что такое хорошая книга / учебник для Flex 4, которая фокусируется на разработке корпоративных приложений на PHP и Flex и объясняет разработку приложений на примерах?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2013

Я не использую сетку данных (или ArrayCollection в качестве dataProvider), поэтому, хотя решение @Jason Towne в целом работает, оно не было решением для моего конкретного случая.

Я решил проблему «не удалось удалить незафиксированные элементы», используя item вместо itemID для метода DELETE, управляемого данными, во Flex. Автоматически сгенерированный метод ActionScript Flash Builder и код PHP используют itemID в качестве параметра, который не работает с данными, управляемыми DELETE, пока ПОСЛЕ записи не сохранено в базе данных. Использование фактической ссылки item в качестве параметра в методе DELETE позволяет удалить зафиксированные и незафиксированные изменения. Затем PHP-код нужно будет изменить.

Я использую типизацию на стороне сервера, поэтому модифицированный код PHP (который очень похож на автоматически сгенерированный PHP-код FB) выглядит следующим образом:

/**
 * 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);
0 голосов
/ 02 июня 2011

Вот что я сделал в этой ситуации. Для строк в моем dataProvider, которые еще не были сохранены (у них есть ID = 0 или что-то), которые удалены, я просто удаляю их, используя что-то вроде:

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

Таким образом, все строки, которые были удалены, никогда не попадут на задний план.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...