AJ. AJ. - 1 year ago 96
Javascript Question

jqGrid not saving inline row edits

I'm working with jqGrid 4.3.2 in an ASP.NET MVC 4 website, jQuery 1.7.2. There are several places in the application where jqGrid is used. My general setup right now is that all editing is done locally (

loadonce: true
) with inline navigation and editing, and all grid data is posted to the server on form submit via AJAX calls. I've run into some difficulty with row edits and at what events they are committed. You can view the site (and source, total work in progress, be nice) here. If you add or edit a row and then click somewhere else on the page, the row edit is not saved. The user has to hit the enter key somewhere during the row edit in order to save the row.

I touched on this a little bit in this question, which Oleg was kind enough to answer. Is there a way to commit a row edit other than when the enter key is pressed, like when the row loses focus maybe?

Answer Source

What you can do is the following:

  1. First of all you have to set restoreAfterSelect: false option of inlineNav. I see that the option is not documented, but you can see it in the source code. Without the setting inlineNav uses beforeSelectRow to call restoreRow (see here).
  2. Implement saving of the previous editing row inside of onSelectRow (see the code from the answer) or inside of beforeSelectRow. Probably the usage of beforeSelectRow will be even easier because the last editing row, which need be saved, could be only the last selected row which you can get from selrow option because the value is not yet changed inside of beforeSelectRow.