2012-12-31 31 views
1

我有一個擁有可編輯日期字段的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,但接下來會發生什麼)...但是,這完全是猜測。我已經到了死衚衕。

+0

我將目標更新爲適當的RESTful URL。它在聯繫服務器保存更改時請求適當的對象ID,但它實際上並未發送更改,它使用GET而不是PUT。 –

+0

我注意到的另一件事是,它總是嘗試GET ID號碼1,而不是物品的實際ID。我在我的JSON文件中有兩個id--連續排序表和我用來管理數據庫中的項的唯一id。我希望Dojo能夠使用後者來操縱系統,但是我發現當我告訴系統使用這些ID時,dgrid並不開心,因爲它們不是連續的。 –

+0

有人剛編輯這篇文章,這提醒我我從未找到解決方案。有什麼建議麼? –

回答

相關問題