Автосохранение через XmlHttpRequest из EditorGridPanel в ExtJS 3.0? - PullRequest
4 голосов
/ 30 июля 2009

У меня есть EditorGridPanel в Ext JS 3.0, заполненный через HttpProxy и JsonReader, и у меня есть редактируемый столбец «работает» - я могу изменить значение, и оно помечает его как грязное.

Теперь, как мне получить после того, как ячейка была отредактирована, отправить XmlHttpRequest на сервер с несколькими базовыми параметрами, полем ID строки, измененным именем столбца и новым значением?

Как только запрос сделан, обновление на стороне сервера легко. Но никакое количество Google и копание в тривиальных примерах EditGridPanel в памяти не помогают заставить EditGridPanel совершить вызов.

Что я не ищу:

  1. REST - просто обновить через обычный GET или POST
  2. Вставить новые записи или удалить строки - обновления только сейчас.
  3. Пакетные обновления - редактирование только одной ячейки за раз.
  4. Связка кода - это должно быть тривиально, как Ajax.InPlaceEditor в Scriptaculous

Ответы [ 2 ]

2 голосов
/ 31 июля 2009

Я наконец понял это ... просто нужен писатель в моем магазине:

var ds = new Ext.data.JsonStore({
    autoSave:       true,
    url:            "ajax-handler.aspx",
    method:         "POST",
    timeout:        120000,
    root:           "rows",
    totalProperty:  "results",
    idProperty:     "primarykeyvalue",
    fields:         previewColumnConfig,
    baseParams:     {
        now:        (new Date()).getTime()
        },
    writer: new Ext.data.JsonWriter({
        encode:     true,
        listful:    false
        })
    });

Примечания:

  • Базовый параметр "сейчас" предназначен для обхода "некоторых браузеров" (предположим) кеширования результатов AJAX
  • «закодировать» возвращает POST-переменные, а не просто результат JSON в POST.
  • «listful» отключен, потому что пользователь редактирует только одну строку / столбец за раз, нет необходимости проектировать синтаксический анализатор на стороне сервера для ввода массива, он может ожидать только одну строку.
  • Да, у меня очень длинное значение тайм-аута.
  • previewColumnConfig определен заранее, в нем хранятся определения моих столбцов.
0 голосов
/ 30 июля 2009

Вы можете использовать событие afteredit для Ext.grid.EditorGridPanel, которое сработает после размытия редактора. Также вы можете установить метод периодической (интервальной) проверки при возникновении события beforeedit и очистить его при запуске события afteredit.

Пример для afteredit:

EditorGridPanel.getColumnModel().getCellEditor(column).on('afteredit', function() {
    //do ajax call for the update.
});

Дайте мне знать, если вам нужен пример для периодической проверки, и я напишу один.

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