jqGrid获取表格的所有行数据

概要:

 最近在做项目需求的时候,需要获取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表中)。 

你可能感兴趣的:(jqGrid)