2014-01-03 2 views
0

Магазин JsonRest Я создал показано нижеКак редактировать OndemandGrid и обновлять в JSONRest магазине

var questionBaseURL = "/" + contextName + "/service/questions/" + projectId + "/"; 
var questionStore = new dojo.store.JsonRest({ 
    target: questionBaseURL, 
    handleAs: 'json', 
    idProperty: 'questionId' 
}); 

questionStore = new dojo.store.Observable(questionStore); 
var memoryStore = new dojo.store.Memory(); 
var questionCacheStore = new dojo.store.Cache(questionStore, memoryStore); 

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

var CustomGrid = declare([OnDemandGrid, Keyboard, Selection]); 
var questionGrid = new CustomGrid({ 
    store: questionCacheStore, 
    columns: [ 
     editor({ 
      label: "Questions", 
      field: "question", 
      editor: "text", 
      editOn: "dblclick", 
      sortable: true, 
      autoSave:true 
     }) 
    ], 
    selectionMode: "single", 
    cellNavigation: false 
}, "questions"); 
questionGrid.startup(); 
questionGrid.renderArray(questionArray); 

Данные правильно заполненный сеткой. Теперь, поскольку я использую «редактор», я могу редактировать заполненные данные в сетке. Я не уверен, как точно определить, были ли данные отредактированы (грязные данные) и какой метод вызывать для переноса обновленных данных на сервер. Я не мог найти легкую документацию. Поэтому любая помощь приветствуется. Заранее спасибо

ответ

0

Вы можете использовать метод сетки save, чтобы выталкивать все элементы с грязными данными обратно на сервер. Существует также метод revert, который можно вызвать для удаления любых грязных данных. Они перечислены в OnDemandList and OnDemandGrid documentation.

Эти методы определены в dgrid/_StoreMixin, который наследуется OnDemandListOnDemandGrid). Плагин столбца editor вызывает updateDirty (также определенный _StoreMixin), когда сделаны изменения, в которых обновлен хэш-код dirty. save проверит этот хэш и позвонит put в магазине для каждого грязного предмета.

+0

У меня была такая же идея при ее реализации. Но по мере того как я дважды щелкаю строку и выполняю любую операцию редактирования, локально изменяется сетка строк и запускается запрос POST. Как вы можете видеть, я использую хранилище Observable Store и Cache. Я могу получить старые данные и новые данные строки, используя событие «questionGrid.on» («dgrid-datachange», function (evt) {}); ». Я попытался вызвать метод сохранения обоих хранилищ внутри события, но он регистрирует ошибку, поскольку «Объект [объект объекта] не имеет метода« сохранить ». Где я могу назвать этот метод? не могли бы вы быть более подробными? – binaries01

+0

'save' - это метод на сетке, а не в магазине. Тем не менее, я пропустил, что в столбце 'editor' есть' autoSave: true', что вызовет функцию сохранения 'grid', каждый раз, когда изменяется поле редактора. Тем не менее, я обычно ожидал, что для запуска PUT через JsonRest, а не POST ... –

+0

ОК спасибо .. – binaries01

Смежные вопросы