上一篇博客存在bug,经过测试找到了原因,并进行修改
上篇文章的添加行操作:
function addRowData(tableId){ //创建一条空的记录,待编辑
var tableObject = $('#'+tableId);
//获取表格的初始model
var colModel = tableObject.jqGrid().getGridParam("colModel") ;
var newRow = JSON.stringify(colModel);
var ids = tableObject.jqGrid('getDataIDs');
//如果jqgrid中没有数据 定义行号为1 ,否则取当前最大行号+1
var rowid = (ids.length ==0 ? 1: Math.max.apply(Math,ids)+1);
//获得新添加行的行号(为什么是负数呢,与编辑行差别对待)
var newrowid = (0-rowid);
//设置grid单元格不可编辑 (防止在添加时,用户修改其他非添加行的数据)
tableObject.setGridParam({cellEdit:false});
//将新行追加到表格头部
tableObject.jqGrid("addRowData", newrowid,newRow,"first");
//设置grid单元格可编辑(防止追加行后,可编辑列无法编辑)
tableObject.jqGrid('editRow', newrowid, false);
}
如果添加一行记录时没有问题的,添加多条记录就出现问题了
红色部分为修改代码
修改后的代码:
function addWorkGroupLine(){
var tableObject = $('#workgroup');
//获取表格的初始model
var colModel = tableObject.jqGrid().getGridParam("colModel") ;
var newRow = JSON.stringify(colModel);
var ids = tableObject.jqGrid('getDataIDs');
//如果jqgrid中没有数据 定义行号为1 ,否则取当前最大行号+1
var rowid = (ids.length ==0 ? 1: Math.min.apply(null,ids)-1);
var rowid = Math.abs(rowid);
var newrowid = (0-rowid);
//设置grid单元格不可编辑 (防止在添加时,用户修改其他非添加行的数据)
tableObject.setGridParam({cellEdit:false});
//将新行追加到表格头部
tableObject.jqGrid("addRowData", newrowid,newRow,"last");
//设置grid单元格可编辑(防止追加行后,可编辑列无法编辑)
tableObject.jqGrid('editRow', newrowid, false);
}
Math.max.apply(Math,ids)+1); Math.max.apply(Math,ids)+1)是获取最大的记录,添加一条记录记录的id为负值,在添加第二条的时候最大那条记录是不会改变的,添加效果为:
修改后获取最小的记录并取其绝对值这样就不会有问题了
没有经过仔细的测试就发表了博客,在这里向大家道歉,以后会好好测试杜绝类似情况发生。