Para la edición en línea se puede logrado esto varias maneras. Para enlazar un evento onBlur al campo de entrada mediante el disparador onSelectRow, lo que elimina la necesidad de editar y guardar los botones, hacer algo como esto:
$('#gridId').setGridParam({onSelectRow: function(id){
//Edit row on select
$('#gridid').editRow(id, true);
//Modify event handler to save on blur.
var fieldName = "Name of the field which will trigger save on blur.";
//Note, this solution only makes sense when applied to the last field in a row.
$("input[id^='"+id+"_"+fieldName+"']","#gridId").bind('blur',function(){
$('#gridId').saveRow(id);
});
}});
Para aplicar un controlador de eventos en directo jQuery para todas las entradas que pueden aparecer dentro de una fila (jqGrid las etiquetas de todos los insumos como rowId_fieldName), bucle de tirar la cantidad de filas de la parrilla y hacer algo como esto:
var ids = $("#gridId").jqGrid('getDataIDs');
for(var i=0; i < ids.length; i++){
fieldName = "field_which_will_trigger_on_blur";
$("input[id^='"+ids[i]+"_"+fieldName+"']","#gridId").live('blur',function(){
$('#gridId').jqGrid('saveRow',ids[i]);
});
}
Nota: Para utilizar desenfoque con .live() como el anterior, se le necesita jQuery 1.4 o el parche ubicado en: Simulating "focus" and "blur" in jQuery .live() method
Tenga cuidado con rowIds. Cuando entres en ordenar, agregar y eliminar filas, es posible que te encuentres escribiendo jQuery complicado para convertir identificadores de fila en iRows o números de fila.
Si eres como yo y se fue con edición célula individual, tendrá que modificar el gatillo afterEditCell con algo como:
$('#gridId').setGridParam({afterEditCell: function(id,name,val,iRow,iCol){
//Modify event handler to save on blur.
$("#"+iRow+"_"+name,"#gridId").bind('blur',function(){
$('#gridId').saveCell(iRow,iCol);
});
}});
Espero que ayude ..
El último ejemplo que proporcionó Jon funcionó muy bien. ¡Gracias! – Mike
Buen ejemplo @Jon todavía tiene problemas si la celda es una fecha con un selector de fecha y no obtiene el campo elegido en el selector y da un error de Javascript – will824
En el último ejemplo, '#uploadTable' debería ser '#gridId'? – morgar