我有一個擁有可編輯日期字段的dgrid。在上面,我有一個「保存」按鈕,調用grid.save
。當我按下按鈕時,它會將XHR請求返回到商店的目標,但不會將任何數據提供回服務器供我保存(即POST爲空)。現在,它已被硬連接到查詢項目ID 1900,您可以在下面的代碼中看到。保存一個基於Dgrid JsonRest的商店
下面是商店啓動:
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日):升級服務器後端使用傳統的基於REST的URL,這似乎使道場稍微更快樂,但它仍然是使用GET
代替PUT
,並不能實際發送任何保存。
更新(2013年1月5日):在調用PUT之前,JsonRest會調用GET嗎?我想知道我的程序是否需要在程序願意去做PUT之前返回某些數據(因此問題不是GET,但接下來會發生什麼)...但是,這完全是猜測。我已經到了死衚衕。
我將目標更新爲適當的RESTful URL。它在聯繫服務器保存更改時請求適當的對象ID,但它實際上並未發送更改,它使用GET而不是PUT。 –
我注意到的另一件事是,它總是嘗試GET ID號碼1,而不是物品的實際ID。我在我的JSON文件中有兩個id--連續排序表和我用來管理數據庫中的項的唯一id。我希望Dojo能夠使用後者來操縱系統,但是我發現當我告訴系統使用這些ID時,dgrid並不開心,因爲它們不是連續的。 –
有人剛編輯這篇文章,這提醒我我從未找到解決方案。有什麼建議麼? –