核心提示:概要: 最近在做项目需求的时候,需要获取jgGrid中的所有行数据;在这里记录一下用到的方法。这是从网上找的代码片段://获取当前表格的所有数据function getJQAllData() { va...
概要:
最近在做项目需求的时候,需要获取jgGrid中的所有行数据;在这里记录一下用到的方法。
这是从网上找的代码片段:
//获取当前表格的所有数据 function getJQAllData() { var o = jQuery("#jqGridId"); //获取当前显示的数据 var rows = o.jqGrid('getRowData'); var rowNum = o.jqGrid('getGridParam', 'rowNum'); //获取显示配置记录数量 var total = o.jqGrid('getGridParam', 'records'); //获取查询得到的总记录数量 //设置rowNum为总记录数量并且刷新jqGrid,使所有记录现出来调用getRowData方法才能获取到所有数据 o.jqGrid('setGridParam', { rowNum: total }).trigger('reloadGrid'); var rows = o.jqGrid('getRowData'); //此时获取表格所有匹配的 o.jqGrid('setGridParam', { rowNum: rowNum }).trigger('reloadGrid'); //还原原来显示的记录数量 return rows; }
注意:
(1)在用的过程中,发现始终会漏掉最后一行数据(最后没采用这种方案)。
(2)下面是我自己的思路做了一个解决方案。
js代码如下:
function getJQAllData() { //拿到grid对象 var obj = $("#jgGridId"); //获取grid表中所有的rowid值 var rowIds = obj.getDataIDs(); //初始化一个数组arrayData容器,用来存放rowData var arrayData = new Array(); if (rowIds.length > 0) { for (var i = 0; i < rowIds.length; i++) { //rowData=obj.getRowData(rowid);//这里rowid=rowIds[i]; arrayData.push(obj.getRowData(rowIds[i])); } } return arrayData; }
最后返回行数据的数组,保存的时候,只需要接收调用该方法的返回值即可。
另外再记录一下常用的处理grid行记录常用的方法:
//获取grid中的选中行(单行) var obj = $("#jqGridId"); var rowid = obj.jqGrid('getGridParam', 'selrow'); //获取grid中的选中行(多行) var ids=obj.jqGrid('getGridParam','selarrrow'); //获取行数据 var rowData=obj.jqGrid('getRowData',rowid); //获取grid表格中的所有rowid var IDs=obj.getDataIDs(); // 选中行实际表示的位置 //var ind = $("#jiGouGridList").getInd(rowid); //清除grid最后一行数据 obj.clearGridData(true); //选中行 obj.setSelection(rowid);
下面介绍grid一个非常重要的方法:
addRowData(rowid, data ,position, srcrowid);
addRowData方法 用于向Grid中插入新的一行。执行成功返回true,否则返回false。 它具有4个参数: $(“#jqgrid_id”).jqGrid(“addRowData”, rowid , data , position,srcrowid ); 例如: $(“#addlist”).jqGrid(“addRowData”, 1, dataRow, “first”,srcrowid); rowid :新行的id号; data :新行的数据对象,形式为{name1:value1,name2: value2…},其中name为colModel中定义的列名称name; position :插入的位置(first:表格顶端;last:表格底端;before:srcrowid之前;after:srcrowid之后); srcrowid :新行将插入到srcrowid指定行的前面或后面(srcrowid是被作为参考的记录数据行的rowid,如果这个rowid没有被找到,那么将没有数据被插入的grid表中)。