Perché in linea di editing si possono compiuto questo in diversi modi. Per associare un evento onblur al campo di ingresso utilizzando il grilletto onSelectRow, eliminando la necessità di modificare e salvare i pulsanti, fare qualcosa di simile:
$('#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);
});
}});
Per applicare un gestore di eventi dal vivo jQuery per tutti gli ingressi che possono apparire all'interno di un fila (jqGrid etichetta tutti gli ingressi come rowId_fieldName), ciclo gettare il numero di righe nella griglia e fare qualcosa di simile:
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: Per utilizzare sfocatura con .Live() come sopra, avrete bisogno di jQuery 1.4 o la patch si trova a: Simulating "focus" and "blur" in jQuery .live() method
Fare attenzione con rowIds. Quando si arriva all'ordinamento, all'aggiunta e alla rimozione di righe, potresti trovarti a scrivere qualche jQuery difficile per convertire gli ID di riga in iRows o numeri di riga.
Se siete come me e si è andato a modificare singola cella, ti consigliamo di modificare il grilletto afterEditCell con qualcosa di simile:
$('#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);
});
}});
Speranza che aiuta ..
L'ultimo esempio fornito da Jon ha funzionato benissimo. Grazie! – Mike
Bel esempio @Jon ha ancora problemi se la cella è una data con un datepicker e non ottiene il campo scelto nel selettore e dà un errore Javascript – will824
Nell'ultimo esempio, '#uploadTable' dovrebbe essere '#gridId'? – morgar