2012-06-13 127 views
6

我正在使用jqGrid 4.3.2在ASP.NET MVC 4網站jQuery 1.7.2中。在使用jqGrid的應用程序中有幾個地方。我現在的一般設置是所有的編輯都通過內聯導航和編輯在本地完成(loadonce: trueclientArray),並且所有網格數據通過AJAX調用通過表單提交發布到服務器。行編輯遇到了一些困難,他們承諾在哪些事件中。你可以查看該網站(和來源,正在進行的工作,很好)here。如果添加或編輯一行,然後單擊頁面上的其他位置,則不會保存行編輯。用戶必須在行編輯過程中的某處按Enter鍵才能保存該行。jqGrid不保存內聯行編輯

我在this question上摸了一下這一點,其中Oleg已經足夠回答了。有沒有辦法提交行編輯,而不是按下回車鍵時,就像行失去焦點時可能?

回答

8

你可以做的是:所有你所設置的inlineNavrestoreAfterSelect: false選項

  1. 第一。我發現該選項沒有記錄,但您可以在the source code中看到它。沒有設置inlineNav使用beforeSelectRow致電restoreRow(請參閱here)。
  2. onSelectRow(請參閱the answer的代碼)或beforeSelectRow的內部實現保存以前的編輯行。 beforeSelectRow的用法可能會更容易一些,因爲最後一個需要保存的編輯行可能只是您從selrow選項中可以獲得的最後一個選定行,因爲該值在beforeSelectRow之內尚未更改。
+0

完美!謝謝,奧列格。這一直在困擾我一段時間。 –

+0

@AJ:不客氣! – Oleg

+0

奧列格雖然已經有2年多了,但你的答案仍然對我有幫助。放置「restoreAfterSelect:false」是關鍵。謝謝 –

1

對於任何人在2016年閱讀此功能,此功能現已併入jqGrid。見https://github.com/tonytomov/jqGrid/issues/785。在撰寫本文時,jqGrid 5.1已經發布,所以我希望這個功能可以從5.2版本開始提供。另外也可以從GitHub獲取最新的代碼。

要使用它只是在你的jqGrid設置以下屬性:

... 
restoreAfterSelect: false, 
saveAfterSelect: true, 
... 

不再有必要實現自己的解決方案。