The code below sets the default values ββfor the new line if the line is added using the form. If a row is added using the built-in jqGrid add button on the toolbar, these methods do not call and default values ββare not set.
How to force the built-in add to follow the same logic as the code below?
var lastSelectedRow; $grid.navGrid("#grid_toppager", { del: true, add: true, view: true, edit: true }, {}, { addedrow: 'beforeSelected', url: '/Grid/Add?_entity=Desktop', beforeInitData: function () { // todo: how to call this method from inline add var rowid = $grid.jqGrid('getGridParam', 'selrow'); if (rowid === null) { alert( 'Select row before adding'); return false; } }, afterShowForm: function(formID) { // todo: how to set default values as this method sets from inline add var selRowData, rowid = $grid.jqGrid('getGridParam', 'selrow'); $('#' + 'Recordtype' + '.FormElement').val('Veerg'); $('#' + 'Nait2' + '.FormElement')[0].checked = true; selRowData = $grid.jqGrid('getRowData', rowid); $('#' + 'Baas' + '.FormElement').val(selRowData.Baas); $('#' + 'Liigid' + '.FormElement').val(selRowData.Liigid); } ); $grid.jqGrid('inlineNav', '#grid_toppager', { addParams: { position: "beforeSelected", rowID: '_empty', useDefValues: true, addRowParams: { keys: true, onEdit : onInlineEdit } }, editParams: { editRowParams: { onEdit : onInlineEdit } }, add: true, edit: false, save: true, cancel: true }); function onInlineEdit(rowId) { if (rowId && rowId !== lastSelectedRow) { cancelEditing($grid); lastSelectedRow = rowId; } }
Update
I tried the code
$grid.jqGrid('inlineNav', '#grid_toppager', { addParams: { position: "beforeSelected", rowID: '_empty', useDefValues: true, addRowParams: { keys: true, extraparam: { _dokdata: FormData }, onSuccess : function (jqXHR) { alert('addp oncuss'); jqXHRFromOnSuccess=jqXHR; return true; }, afterSave: function (rowID) { alert('afeesave addp '); cancelEditing($grid); afterDetailSaveFunc(rowID,jqXHRFromOnSuccess); jqXHRFromOnSuccess=null; }, onError: errorfunc, afterRestore : setFocusToGrid, oneditfunc : function (rowId) { var selRowData, selRowId ; if (rowId && rowId !== lastSelectedRow) { cancelEditing($grid); selRowId = $grid.jqGrid('getGridParam', 'selrow'); if (selRowId ) { selRowData = $grid.jqGrid('getRowData', selRowId ); $('#' + rowId + '_Reanr' ).val(selRowData.Reanr); } lastSelectedRow = rowId; } } } } );
Only the oneditfunc func function is called. How to force the so-called onSuccess, afterSave, onError, etc. Methods?
Update 2
I added a patch to jqGrid from github, recommended in response, and tried
$.extend( jQuery.jgrid.inlineEdit, { addParams: { position: "beforeSelected", rowID: '<%= EntityBase.NewRowIdPrefix %>', useDefValues: true, addRowParams: { keys: true, extraparam: { _dokdata: FormData }, onSuccess : function (jqXHR) { jqXHRFromOnSuccess=jqXHR; return true; }, afterSave: function (rowID) { cancelEditing($grid); <% if (Model is RowBase ) { %> afterDetailSaveFunc(rowID,jqXHRFromOnSuccess); <% } else { %> afterGridSaveFunc(rowID,jqXHRFromOnSuccess); <% } %> jqXHRFromOnSuccess=null; }, onError: errorfunc, afterRestore : setFocusToGrid, oneditfunc : function (rowId) { if (rowId && rowId !== lastSelectedRow) { cancelEditing($grid); lastSelectedRow = rowId; } } } } } );
In this case, I do not complete the inline add. All parameters from this code are ignored.