保存基于Dgrid JsonRest的存储

时间:2012-12-31 21:06:49

标签: rest dojo store dgrid

我有一个具有可编辑日期字段的dgrid。在它上方,我有一个“保存”按钮,调用grid.save。当我点击按钮时,它会将XHR请求返回到商店的目标,但不会将任何数据提供给服务器以供我保存(即POST为空)。现在,查询项目ID 1900是硬连线的,您可以在下面的代码中看到。

以下是商店的启动方式:

  var store = new JsonRest({
    target: "/safari/resources/1900/calendarObjects/",
    sortParam: "sort",
    idProperty: "id",
    properties: {
        startDate:{
            format: "date-time"
        },
        endDate:{
            format: "date-time"
        }
    }
  });

这是网格:

        var grid = new declare([OnDemandGrid, dgridEditor, Keyboard, Selection, DijitRegistry])({
            store: store,
            query: {responseType: "json" },
            bufferRows: 40,
            loadingMessage: "Loading...",
            columns: [
                {field: "oid", label: "Object ID"},
                dgridEditor({field: "startDate", name: "Start Date", editorArgs: { selector: 'date', datePattern: 'yyyy-MM-dd', locale: 'en-us' }}, DateTextBox),
                dgridEditor({field: "startTime", name: "Start Time"}, TimeTextBox, "click"),
                dgridEditor({field: "endDate", name: "End Date"}, DateTextBox, "click"),
                dgridEditor({field: "endTime", name: "End Time"}, TimeTextBox, "click"),
                {field: "endDateOid", label: "End OID"}
            ],
        }, "grid");

保存按钮如下所示:

registry.byId("saveButton").on("click", function (){
    grid.save();    
 });

就像我说的,点击“保存”后,一个新的XHR请求会激活,但是如果它将任何数据发送回服务器,我不确定它的去向。我让我的后端打印出收到的所有HTTP标头,但没有看到任何内容。

更新(2013年1月2日):升级后的服务器后端使用传统的RESTful网址,这似乎让Dojo稍微开心一点,但仍然使用GET代替{{ 1}}并且实际上没有发送任何东西来保存。

更新(2013年1月5日):在调用PUT之前,JsonRest有没有理由调用GET?我想知道我的程序是否需要在程序愿意进行PUT之前返回某些数据(因此问题不是GET,而是下一步的问题)......但是,这完全是猜测。我走到了尽头。

1 个答案:

答案 0 :(得分:0)

我不确定这是否有效,你可以查看https://github.com/SitePen/dgrid/blob/master/test/JsonRest.html

                window.grid = new (declare([Grid, Selection, Keyboard]))({
                    store: testStore,
                    getBeforePut: false,
                    columns: columns
                }, "grid");

您可以尝试将属性getBeforePut设置为false