El siguiente código establece los valores predeterminados para la nueva fila si la fila se agrega mediante el formulario. Si se agrega una fila usando el botón agregar jqGrid en línea de la barra de herramientas, esos métodos no se invocan y los valores predeterminados no se establecen.Cómo establecer valores predeterminados si se agrega una fila usando el botón agregar en línea en jqgrid
Cómo forzar inline add para realizar la misma lógica que el código siguiente?
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;
}
}
actualización
me trataron código
$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;
}
}
}
}
);
Sólo oneditfunc func se llama. ¿Cómo forzar a los métodos onSuccess, afterSave, onError etc. a llamarse también?
Actualización 2
que añade parche para jqGrid de github recomienda en respuesta y trataron
$.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;
}
}
}
}
});
que este caso entran en línea no ponga fin a añadir. Todos los parámetros de este código son ignorados.
Muchas gracias. El código en cuestión recupera los valores predeterminados de la fila actual y no permite agregar filas si la fila actual no está configurada. ¿Cómo implementar esto usando defaultValue? – Andrus
@Andrus: El ser exactamente el código hace cosas diferentes. Las líneas como '$ ('#' + 'Recordtype' + '.FormElement'). Val ('Veerg');' y '$ ('#' + 'Nait2' + '.FormElement') [0] .checked = verdadero; 'son ajustes puros de valores predeterminados. Debido a otras configuraciones, no entiendo por qué no hace la configuración dentro del controlador 'onEdit' (en la función' onInlineEdit' en su caso)? – Oleg
Necesito obtener valores de la fila actual. No sé cómo obtener los valores de fila actuales en onlineEdit. Probablemente la fila actual ya está agregada, no hay forma de obtener valores de fila previos. también si no hay una fila actual, se debe bloquear agregar en línea. onInlineedit no permite la operación de añadir pads, ya se agregó una nueva fila. – Andrus