formatter是一个格式化的函数,可以对jqgrid的单元格进行格式化,同时,还能用来自定义单元格元素,用来添加标签。
函数原型:
function customFmatter(cellvalue, options, rowObject){
}
其中cellvaule,是该单元格的值,这个怎么理解呢,如果该列绑定了数据,如下:
{
label: 'IsMarked',
name: 'IsEdit',
index: 'IsEdit',
sortable: true,
align: 'center',
width: 40,
}
那么cellvalue在是每行记录中,'IsEdit’对应的值。如果我们没有绑定数据,那这个参数是未定义的。
options里面是模型设定的相关信息,如下:
这里最主要的是rowId,因为每一列是的rowId是唯一的,那么根据rowId便可以将生成的自定义单元格与各自的行联系在一起。
rowObject其实就是每一行记录的传过来的数据,如下:
下面开始讲解,如何自定义单元格元素与每行联系在一起,通过以下的格式化函数咋每行生成一个包含两个a标签的单元格,用a = options['rowId'];
获得了其ID,并且将其传入js代码d的超链接中:
formatter: function (rowId, options, row) {
console.log(options)
console.log(row)
var btn = "";
a = options['rowId'];
btn += ' <a href="javascript:onDtl('
+ a
+ ')"class="mesq">MarkIt</a> '
btn += ' <a href="javascript:onDel('
+ a
+ ')"class="mesd">Detial</a> '
return btn;
}
js代码如下:
function onDtl(a) {
b = $("#grid").getCell(a, "pdfname");
username = $('#username').text()
window.open(src = '/pdf/mark/?' + 'pdfname=' + b + '&' + 'username=' + username, 'target', '');
}
这里实现了获得每行显示的pdf的名字,并且,在新的标签页打开这个pdf文件。