//保存添加行的id编号 var newrowids = new Array() ; //给grid添加行 function addRow($jqgrid) { jqgrid 多行添加及删除解决思路 //获得jqgrid所有编号 var ids = $jqgrid.jqGrid('getDataIDs'); //获得第一行的role var $firstTrRole = $("#plsfList").find("tr").eq(1).attr("role"); //如果jqgrid中没有数据 定义最大行号为100 ,否则取当前最大行号 var rowid = $firstTrRole == "row" ? Math.max.apply(Math,ids):100; //获得新添加行的行号(数据编号) var newrowid = parseInt(rowid)+1; newrowids[newrowids.length]= newrowid ; //定义row var dataRow = { id: "", valid:"", zoneID:'', factorPG:'', factorQG:'', factorPL:'', factorQL:'', caseID:'' }; //将新添加的行插入到第一列 $jqgrid.jqGrid("addRowData", newrowid, dataRow, "first"); } /*--------------数据保存----- -----------*/ function doSave($jqgrid){ var result = getParamArray($jqgrid); var checkResult = result[0]; var paramArray = result[1]; if(checkResult){ //异步保存比例因子 saveDataBatch(paramArray,newrowids); } } /*--------------获取参数数组---------------- * return : array (element1:验证结果 ; element2:参数数组) */ function getParamArray($jqgrid){ //定义参数数组 var paramArray = new Array(); var $check_val ; var $zoneval ; var $pasfval ; var $pisfval ; var $lasfval ; var $lisfval ; var rowidslength = newrowids.length; var checkResult = true; for(var i = rowidslength-1 ; i>= 0 ; i--){ var $params = $jqgrid.find("input[id^="+newrowids[i]+"]"); $check_val = $params.eq(0).is(':checked') ? 1:0; $zoneval = $params.eq(1).val() ; $pasfval = $params.eq(2).val() ; $pisfval = $params.eq(3).val() ; $lasfval = $params.eq(4).val() ; $lisfval = $params.eq(5).val() ; //校验参数 :当单数据成功,添加数组;否则跳出循环 if(checkParam($params,$zoneval,$pasfval,$pisfval,$lasfval,$lisfval)){ //定义比例因子对象 var param = new Object(); param.valid = $check_val ; param.zoneID = $zoneval ; param.factorPG = $pasfval ; param.factorQG = $pisfval ; param.factorPL = $lasfval ; param.factorQL = $lisfval ; param.caseID = $("#caseID").val() ; paramArray[paramArray.length] = param ; }else{ checkResult = false ; break; } } return [checkResult ,paramArray]; } /*--------------批量保存数据------------------ * param: paramArray 数据组 ; * newrowids 添加行的id编号 */ function saveDataBatch(paramArray,newrowids){ var json = JSON.stringify(paramArray); var url = '<%=basePath%>'+"/saveBatch" ; $.ajax({url:url,type:"post",timeout:5000,data:{json:json}, success:function(data){ alert(data); //重新加载页面 reloadGrid(); //将添加行的编号数组制空 newrowids.length = 0 ; }); } /*--------------批量删除----- -----------*/ function deleteBatch($jqgrid){ var ids=$jqgrid.jqGrid("getGridParam", "selarrrow"); //如果当前页面没有正在编辑的数据 就去数据库删除 if (!isRowNeedSave($jqgrid)){ crudDeleteSelected(ids, "<c:url value='delete' />"); } //仅是在页面删除 else{ if(ids==null || ids.length==0) { alert("请选择要删除的记录"); return; } if(confirm("确定删除选中的记录吗?")) { var idsL = ids.length ; for(var i =0 ; i<idsL ; i++){ $jqgrid.find("tr[id="+ids[i]+"]").remove(); //删除当前删除行的编号 newrowids.remove(ids[i]); } } } } /*-------判断当前grid中是否存在需要编辑的行 开始-----------*/ function isRowNeedSave($jqgrid){ return getEditRowCount($jqgrid) > 0 ? true : false ; }