Thanks for the advice…
I now track which cell I am editing in the “beforeEditCell” and save the info in a global variable:
beforeEditCell: function (rowid, cellname, value, iRow, iCol) { _cellInEdit = { row: iRow, col: iCol }; }
I then use “afterSubmitCell” and, when needed, call:
grid.setRowData(rowid, info.Data, null);
to set the data for the entire row to the new data I just got from the server in “info.Data”.
In “afterSubmitCell” I also determine if the “_cellInEdit” is different from the one the “afterSubmitCell” was submitting. If it is different, user must have moved from one input cell to another… In that case, I restore the cell (sinces its value may have changed).
var newRow = _cellInEdit.row;
var newCol = _cellInEdit.col;
if (newRow != iRow || newCol != iCol) {