【问题标题】:How to edit OndemandGrid and update to the JSONRest Store如何编辑 OndemandGrid 并更新到 JSONRest Store
【发布时间】:2014-01-03 09:10:48
【问题描述】:

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

数据已正确填充到网格中。现在,由于使用“编辑器”,我可以在网格中编辑填充的数据。我不确定如何准确检测数据是否已被编辑(脏数据)以及调用哪种方法将更新的数据传回服务器。我找不到任何简单的文档。所以任何帮助表示赞赏。在此先感谢

【问题讨论】:

    标签: model-view-controller dojo dgrid jsonreststore


    【解决方案1】:

    您可以使用网格的save 方法将所有带有脏数据的项目推回服务器。还有一个revert 方法可以被调用来丢弃任何脏数据。这些在OnDemandList and OnDemandGrid documentation 中列出。

    这些方法在dgrid/_StoreMixin 中定义,由OnDemandList(和OnDemandGrid)继承。进行更改时,editor 列插件调用updateDirty(也由_StoreMixin 定义),这会更新dirty 哈希。 save 将检查此哈希并在商店中为每个脏项目调用 put

    【讨论】:

    • 我在实现它时也有同样的想法。但是当我双击该行并执行任何编辑操作时,本地行网格被更改并且正在触发一个 POST 请求。如您所见,我正在使用 Observable Store 和 Cache 存储。我可以通过使用事件“questionGrid.on("dgrid-datachange", function(evt){});”来获取行的旧数据和新数据。我尝试在事件中调用两个商店的保存方法,但它记录了一个错误,因为“对象 [对象对象] 没有方法‘保存’”。我应该在哪里调用这个方法?能详细点吗?
    • save 是网格上的方法,而不是存储上的方法。但是,我错过了您的editor 列有autoSave: true,这将导致每次更改编辑器字段时都会调用网格的save 函数。但是,我通常希望通过 JsonRest 触发 PUT,而不是 POST...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多