我正在使用內聯編輯並希望調用jqgrid.saveRow
(即使沒有更改)。如果數據沒有改變,那麼一定不能有呼叫到服務器進行更新。僅在數據更改時保存jqgrid.saveRow
如果在內聯編輯期間沒有更改該行中的任何數據,如何跳過將數據發送到服務器?
我正在使用內聯編輯並希望調用jqgrid.saveRow
(即使沒有更改)。如果數據沒有改變,那麼一定不能有呼叫到服務器進行更新。僅在數據更改時保存jqgrid.saveRow
如果在內聯編輯期間沒有更改該行中的任何數據,如何跳過將數據發送到服務器?
jqGrid使內部jQuery.ajax
請求將數據發送到服務器。您可以使用ajaxRowOptions
選項對jQuery.ajax
使用的選項進行其他自定義。例如,您可以定義beforeSend
回調(有關詳細信息,請參閱the documentation的jQuery.ajax
)。在發送數據之前,該回調將被稱爲。通過從回調中返回false
來取消ajax請求是非常重要的。 The answer提供簡單的代碼,演示如何定義beforeSend
回調。
要在編輯過程中驗證數據是否已更改,可以使用內部jqGrid選項savedRow
(.getGridParam("savedRow")
獲取數據)。因爲jqGrid允許同時爲multipla字符串調用editRow
,所以該選項包含行的數組。 savedRow
陣列中的每一項都有附加屬性id
,您可以使用它來查找當前將保存的項目。
因此,您可以將準備發送到服務器的數據與保存在savedRow
中的數據進行比較。您可以在beforeSend
回調中執行此操作。如果您發現數據未更改,則回調可以返回false
以跳過將數據發送到服務器。
對不起,但不清楚你做了什麼。你想*手動調用'saveRow'嗎?你寫道:「想調用jqgrid.saveRow(即使沒有任何改變)」,但在標題中寫道:「僅在數據改變時保存jqgrid.saveRow」。你有什麼問題?你想不發送未經修改的數據到服務器嗎?可能你的問題是:如果在內聯編輯過程中沒有更改該行中的任何數據,如何跳過將數據發送到服務器? – Oleg
@奧列格:是的,我的意思是! – lordkain