jqGrid格自定义格式化显示数据是通过colModel中的formatter来实现的。他有三个参数,第一个 参数表示当前单元格的数据;第二个暂时没用过,应该是jqGrid设置的三个选项;第三参数是该行的所有数据。
在更新数据的时候遇到了一个问题,及当修改数据格式化的时候和第一次加载数据格式化的时候不一样了。主要因为,第一次加载数据的是,celval的值是undefined,rowdata的值是当前数据行的值,不包含自定义列。
当修改的时候,celval是有值的,就是我修改时传递的值。rowdata就有些不一样了,这个值会包含自身列的数据值。
下面这段代码能很好的检测出来他们之间的区别:
//初始化
$('#grid').jqGrid({
url:'test.json',
dataType:'json',
colNames:['自定义列'],
colModel:[
{
name:'_a',
formatter:function(celval, options, rowdata){
console.log(celval);
console.log(rowdata);
console.log('---------------------------------------------------------------------');
}
}
]
});
//修改单条数据数据
$('#grid').jqGrid('setRowData',1,{_a:{a:'a'}});