ExtJs добавить, удалить, обновить строку в сетке - PullRequest
2 голосов
/ 10 ноября 2009

Мне нужно, чтобы пользователь мог добавить новую строку в сетку. Пользователь также может обновить одну или несколько строк.

Каков наилучший способ сделать это?

Я пытался использовать Пример хранилища RESTful , но не смог обработать сообщение REST с помощью php.

Когда кнопка добавления записи нажата, она запускает POST дважды (один раз при нажатии и один раз при нажатии на обновление).

Кроме того, обновления остаются помеченными даже после публикации в БД.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 11 ноября 2009

Вы должны обратить пристальное внимание на код в демоверсии Row Editor . Обратите внимание, что они добавили прослушиватели событий к событиям «добавить», «обновить» и «удалить», которые (в данном случае) вызвали функцию хранилища.

Не уверен, откуда исходит ваш POST (так как вы еще не опубликовали код). По сути, вы бы установили прослушиватель на событие «обновление» вашего магазина. Все ваши правки происходят локально, затрагивая только локальный объект «Магазин», пока вы не скажете иначе. Прикрепив прослушиватель событий к событию «обновление» хранилища, вы можете заставить его обрабатывать отправку данных обратно на сервер, если запись действительно изменилась if(record.dirty). «Store» получает событие «update», а RowEditor получает событие «afteredit». Что касается маркеров изменения, внимательно посмотрите на метод commitChanges () объекта "Store".

1 голос
/ 04 марта 2011

Двойной POST и грязные записи - это та же проблема.

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

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

1 голос
/ 02 декабря 2009

У меня недавно была такая же проблема (записи все еще помечены как грязные, хотя ответ был чистым). И у меня может быть решение для тебя. Я определял метаданные для внутриполосного JsonReader и не устанавливал свойствоProperty, делая ужасное предположение, что оно будет придерживаться значения по умолчанию «успех». Как только я предоставил это, все волшебство начало работать. Я предлагаю вам просмотреть конфигурацию JsonReader и дважды проверить, какие данные вы отправляете. Читатель довольно требователен к тому, что получает обратно. У вас должны быть определены idProperty, root, successProperty и т. Д.

FWIW, оно выдает исключение, но я никогда не вижу его в консоли Firebug. Чтобы найти эту проблему, мне пришлось пройти через трудную задачу - пройтись по коду Ext.

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