Запись изменений из редактируемой сетки данных обратно в локальное хранилище данных - Adobe Air / Flex - PullRequest
0 голосов
/ 28 октября 2010

Я использую Adobe Air для получения данных от SalesForce и представления их в сетке данных.

Я использую запрос для получения данных, а затем помещаю их в массив массивов, привязанный к сетке данных., это работает правильно, и данные отображаются.

Я сделал сетку данных редактируемой и могу изменить значения в сетке данных, но не могу найти способ сохранить изменения в локальной базе данных.

Я использую следующий код: -

защищенная функция VisitReportGrid_changeHandler (событие: ListEvent): void {app.wrapper.save (VisitReportGridProvider)}

Но здесь есть следующееошибка при попытке его скомпилировать: -

1067: неявное приведение значения типа mx.collections: ArrayCollection к несвязанному типу mx.data:IManaged.

Очевидно, я делаю этонеправильно, но я не могу найти правильный синтаксис.

Заранее благодарен за помощь

Рой

Ответы [ 2 ]

1 голос
/ 28 октября 2010

Этого кода недостаточно, чтобы понять, где на самом деле проблема Необходимо знать, что такое VisitReportGridProvider, что такое метод wrapper.save ().

** после комментария:

F3DesktopWrapper.save ():

          public function save(item:IManaged):void

Сохраняет указанный управляемый объект в локальной базе данных. Вы должны сделать явный вызов syncWithServer (), чтобы обновить данные на сервере salesforce. Однако не вызывайте syncWithServer () слишком часто (пакетируйте ваши вызовы сохранения), так как это может израсходовать ваше использование выделенного API. Если элемент находится в конфликте, конфликт будет разрешен.

Параметры:

item:IManaged - Управляемый объект для создания или обновления.

вы передаете параметр с типом ArrayCollection, который не реализует интерфейс IManaged.

0 голосов
/ 29 октября 2010

Вам необходимо передать элемент в ArrayCollection, который был изменен на функцию сохранения. Как:

acc.fieldCollection.updateObject(new AsyncResponder(function(o:Object, t:Object):void {
  app.wrapper.save(o as Account);
}, function(e:Object):void {

}));
...