Model view controller 如何编辑OndemandGrid并更新到JSONRest存储

Model view controller 如何编辑OndemandGrid并更新到JSONRest存储,model-view-controller,dojo,dgrid,jsonreststore,Model View Controller,Dojo,Dgrid,Jsonreststore,我创建的JsonRest存储如下所示 var questionBaseURL = "/" + contextName + "/service/questions/" + projectId + "/"; var questionStore = new dojo.store.JsonRest({ target: questionBaseURL, handleAs: 'json', idProperty: 'questionId' }); questionStore = n

我创建的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);

在网格中正确填充数据。现在,由于我使用“编辑器”,我可以编辑网格中填充的数据。我不确定如何准确地检测数据是否已被编辑(脏数据),以及调用哪个方法将更新的数据带回服务器。我找不到任何简单的文档。因此,我们非常感谢您的帮助。提前感谢

您可以使用网格的
保存
方法将包含脏数据的所有项目推送回服务器。还有一个
revert
方法,可以调用该方法来丢弃任何脏数据。这些都列在列表中


这些方法在
dgrid/_StoreMixin
中定义,由
OnDemandList
(和
OnDemandGrid
)继承。当进行更改时,
编辑器
列插件调用
更新属性
(也由
\u StoreMixin
定义),更新
脏的
散列
save
将检查此散列并调用
put
将每个脏项放入存储。

我在实现它时也有相同的想法。但是,当我双击该行并执行任何编辑操作时,行网格在本地发生了更改,并触发了POST请求。正如您所看到的,我使用的是可观察存储和缓存存储。我能够通过使用事件“questionGrid.on”(“dgrid datachange”,function(evt){});获取行的旧数据和新数据。我尝试在事件中调用两个存储的save方法,但它记录了一个错误,因为“Object[Object]没有方法‘save’”。我该把这种方法称为哪里?你能说得更详细一点吗?
save
是网格上的一种方法,而不是商店上的。但是,我没有注意到您的
编辑器
列具有
自动保存:true
,这将导致每次更改编辑器字段时调用网格的
保存
函数。然而,我通常会期望发射一个PUT-through JsonRest,而不是一个POST。。。