`

jqgrid多行添加保存,jqgrid多行删除

阅读更多

//保存添加行的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 ;
}


分享到:
评论
2 楼 zld406504302 2013-06-19  
remote 需要设置editUrl,会执行一个ajax 调用,就是把要修改的内容提交到后台,做处理;
clientArray 是将数据缓存在页面,就是当前的jqgrid列表中,不会调用后台服务。详细可参考http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing
1 楼 Minn 2013-06-18  
Hi楼主,在多行编辑时,我使用了"clientArray"属性, 加上了这几个设置: "cellSubmit:'clientArray'", "editurl:clientArray'," ;但是我不是很清楚‘clientArray’到底是个什么数据结构,是否需要自己定义一个‘clientArray’?

相关推荐

    数据表格JqGrid自适应列宽度

    NULL 博文链接:https://vipshow.iteye.com/blog/1812381

    单行或多行复杂的固定(冻结)表头的完美解决方案

    自定义的用于处理GridView的固定(冻结)表头,单行或多行复杂表头不限,能兼容多种济览器版本,对tableLayout:fixed和auto这两种情况都是支持的。

    获取jqGrid中选择的行的数据

    下面可以获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id: var id=$(‘#gridTable').jqGrid(‘getGridParam','selrow'); 如果想要获取选择多行的id,那这些id便封装成一个id数组,那可以使用以下...

    jqGrid表格底部汇总、合计行footerrow处理

    主要为大家详细介绍了jqGrid表格底部汇总、合计行footerrow处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    jqGrid读取选择的多行的某个属性代码

    主要介绍了jqGrid读取选择的多行的某个属性实现代码,需要的朋友可以参考下

    Jqgrid设置全选(选择)及获取选择行的值示例代码

    本篇文章主要介绍了Jqgrid设置全选(选择)及获取选择行的值示例代码。需要的朋友可以过来参考下,希望对大家有所帮助

    jquery.jqGrid-3.6.4

    jqGrid是一个Ajaxed jQuery Grid插件。提供分页功能,添加、编辑、删除和搜索表中记录,支持多种数据类型输入:XML,JSON,Array等,多行选择,支持子表格,集成日期选择控件等等。

    jquery.jqGrid-3.8.12.zip

    jqGrid是一个Ajaxed jQuery Grid插件。提供分页功能,添加、编辑、删除和搜索表中记录,支持多种数据类型输入:XML,JSON,Array等,多行选择,支持子表格,集成日期选择控件等等

    jqgrid demo

    jqGrid是一个Ajaxed jQuery Grid插件。提供分页功能,添加、编辑、删除和搜索表中记录,支持多种数据类型输入:XML,JSON,Array等,多行选择,支持子表格,集成日期选择控件等

Global site tag (gtag.js) - Google Analytics