Il codice seguente imposta i valori predefiniti per la nuova riga se la riga viene aggiunta utilizzando il modulo. Se la riga viene aggiunta utilizzando il pulsante di aggiunta inline jqGrid dalla barra degli strumenti, questi metodi non vengono chiamati e i valori predefiniti non vengono impostati.Come impostare i valori predefiniti se la riga viene aggiunta utilizzando il pulsante Aggiungi in linea in jqgrid
Come forzare l'aggiunta in linea per eseguire la stessa logica del codice riportato di seguito?
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;
}
}
Aggiornamento
ho provato il codice
$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;
}
}
}
}
);
Solo oneditfunc func viene chiamato. Come forzare anche i metodi onSuccess, afterSave, onError etc?
Aggiornamento 2
ho aggiunto patch per jqGrid da github raccomandato in risposta e ha cercato
$.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;
}
}
}
}
});
I questo caso entrare non pone fine linea aggiungere. Tutti i parametri da questo codice sono ignorati.
Grazie mille. Il codice in questione recupera i valori predefiniti dalla riga corrente e non consente di aggiungere una riga se la riga corrente non è impostata. Come implementarlo usando defaultValue? – Andrus
@Andrus: l'essere esattamente il codice fa cose diverse. Le righe come '$ ('#' + 'Recordtype' + '.FormElement'). Val ('Veerg');' e '$ ('#' + 'Nait2' + '.FormElement') [0] .checked = true; 'sono pura impostazione di valori predefiniti. A causa di altre impostazioni, non capisco perché non si eseguano le impostazioni all'interno del gestore 'onEdit' (nella funzione' onInlineEdit' nel tuo caso)? – Oleg
Ho bisogno di ottenere i valori dalla riga corrente. Non so come ottenere i valori delle righe correnti in onInlineEdit. Probabilmente la corrente è già stata aggiunta, nessun modo per ottenere valori di riga precedenti. anche se non c'è una riga corrente, sarà necessario aggiungere shoudl inline. onInlineedit non consente di aggiungere un'operazione di aggiunta, la nuova riga è già stata aggiunta. – Andrus