Для редактирования в строке вы можете сделать это несколькими способами. Чтобы привязать событие onblur к полю ввода с помощью триггера onSelectRow, устраняя необходимость в кнопках редактирования и сохранения, выполните что-то вроде этого:
$('#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);
});
}});
Чтобы применить обработчик живого события jQuery ко всем входам, которые могут появиться в строке (jqGrid помечает все входы как rowId_fieldName), создайте в цикле число строк в вашей сетке и сделайте что-то подобное:
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]);
});
}
Примечание: Чтобы использовать размытие с .live (), как описано выше, вам понадобится jQuery 1.4 или патч, расположенный по адресу:
Имитация "фокуса" и "размытия" в методе jQuery .live ()
Будьте осторожны с rowIds. Когда вы приступите к сортировке, добавлению и удалению строк, вы можете написать какой-нибудь хитрый jQuery для преобразования идентификаторов строк в iRow или номера строк.
Если вы похожи на меня и у вас есть индивидуальное редактирование ячейки, вам нужно изменить триггер afterEditCell следующим образом:
$('#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);
});
}});
Надеюсь, это поможет ..