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