对于在线编辑,您可以通过多种方式完成此操作。要使用 onSelectRow 触发器将 onblur 事件绑定到输入字段,从而无需编辑和保存按钮,请执行以下操作:
$('#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 或位于以下位置的补丁:
Simulating "focus" and "blur" in jQuery .live() 方法
小心使用 rowId。当您开始对行进行排序、添加和删除时,您可能会发现自己编写了一些棘手的 jQuery 来将行 ID 转换为 iRows 或行号。
如果您像我一样进行单独的单元格编辑,则需要使用以下内容修改 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);
});
}});
希望有帮助..