1

我有一个具有可编辑日期字段的 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 URL,这似乎让 Dojo 稍微更快乐,但它仍然在使用GET而不是PUT实际发送任何内容以保存。

更新(2013 年 1 月 5 日): JsonRest 有什么理由会在调用 PUT 之前调用 GET 吗?我想知道我的程序是否需要在程序愿意执行 PUT 之前返回某些数据(因此问题不在于 GET 而是接下来发生的任何事情)......但是,这完全是猜测。我已经走到了死胡同。

4

1 回答 1

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");

您可以尝试将属性设置getBeforePutfalse.

于 2013-07-24T09:55:48.443 回答