2013-12-17 45 views
0

我正在使用內聯編輯並希望調用jqgrid.saveRow(即使沒有更改)。如果數據沒有改變,那麼一定不能有呼叫到服務器進行更新。僅在數據更改時保存jqgrid.saveRow

如果在內聯編輯期間沒有更改該行中的任何數據,如何跳過將數據發送到服務器?

+1

對不起,但不清楚你做了什麼。你想*手動調用'saveRow'嗎?你寫道:「想調用jqgrid.saveRow(即使沒有任何改變)」,但在標題中寫道:「僅在數據改變時保存jqgrid.saveRow」。你有什麼問題?你想不發送未經修改的數據到服務器嗎?可能你的問題是:如果在內聯編輯過程中沒有更改該行中的任何數據,如何跳過將數據發送到服務器? – Oleg

+0

@奧列格:是的,我的意思是! – lordkain

回答

3

jqGrid使內部jQuery.ajax請求將數據發送到服務器。您可以使用ajaxRowOptions選項對jQuery.ajax使用的選項進行其他自定義。例如,您可以定義beforeSend回調(有關詳細信息,請參閱the documentationjQuery.ajax)。在發送數據之前,該回調將被稱爲。通過從回調中返回false來取消ajax請求是非常重要的。 The answer提供簡單的代碼,演示如何定義beforeSend回調。

要在編輯過程中驗證數據是否已更改,可以使用內部jqGrid選項savedRow.getGridParam("savedRow")獲取數據)。因爲jqGrid允許同時爲multipla字符串調用editRow,所以該選項包含行的數組savedRow陣列中的每一項都有附加屬性id,您可以使用它來查找當前將保存的項目。

因此,您可以將準備發送到服務器的數據與保存在savedRow中的數據進行比較。您可以在beforeSend回調中執行此操作。如果您發現數據未更改,則回調可以返回false以跳過將數據發送到服務器。

相關問題