2010-10-19 54 views
1

我在jqgrid上做了一些內聯編輯。客戶想要一個確認對話框來顯示用戶真的想保存所做的更改(類似於刪除的工作方式)。在看http://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js我注意到editRow命令帶有這些參數。JqGrid內嵌編輯確認框對話框

table.jqGrid( 'editRow',ID,真/ /, 函數(){警報( '1');}/oneditfunc /, 函數(){警報( '1.5' );返回false;}/successfunc /, 空/ URL /, 空/ extraparam /, 函數(){警報( '2');}/aftersave /, 功能( ){alert('3');}/錯誤 /, function(){alert('4');}/afterrestore /);

當我開始編輯oneditfunc被調用。在發佈到服務器successfunc get後被調用,然後afterrestore被調用。似乎應該有一個beforeSave或類似的東西?

這些參數被使用併發送到saveRow函數。它看起來並不像我可以注入一個方法來中止發送數據或彈出一個模式窗口來確認所做的更改。

這是我的疏忽還是這一些功能,我將不得不烤到jqgrid?

回答

1

解決您的問題的一種方法是使用custom validation editrules。在數據發送到服務器之前,它將被驗證。該方法的唯一缺點是,如果用戶決定不發送數據,則會顯示錯誤消息和主要生成的文本。

另一種方法是使用serializeRowDataerrorfunceditRow的參數)。通常,jqGrid的serializeRowData參數將用於修改或編碼將發送到服務器的數據。因此,如果您在函數內部顯示一個構造對話框,並且沒有向案例中的服務器發送數據或虛假錯誤數據,則服務器可以使用已知錯誤進行應答。然後在你的errorfunc裏面,你可以忽略這個特殊的錯誤。所以你可以用錯誤信息解決問題。畢竟由於錯誤jqGrid調用「restoreRow」,原始數據將被恢復。

+0

現在我正在探索cellediting,因爲它有一個beforeSubmitCell事件。我仍然試圖找出如何訪問默認的模式彈出窗口,但我開始認爲我將不得不爲我的目的創建一個新的窗口。非常重要的代碼可用性。 – Steve 2010-10-19 21:09:43

+0

但由於beforeSubmitCell無法取消帖子,所以這看起來不太有用。令人沮喪。 – Steve 2010-10-19 21:28:20

+0

,我希望能夠取消帖子,而不會打擾虛擬請求的服務器。 – Steve 2010-10-19 21:29:34