我正在尝试为jqGrid列创建某种可重用的格式化程序, 我想创建自定义格式化程序,我可以传递其他数据,类似于此代码:
function imageLinkFormatter(cellval,options,rowObject,icon,link_class,link_action){
var img='<span class="ui-icon '+icon+' icon"><span/>';
var link='<a href="#'+link_action+'/id/'+rowObject.id+'" class="'+link_class+'" rel="'+rowObject.id+'">'+img+'</a>';
return link;
}
答案 0 :(得分:12)
这可能是一种误解。 custom formatter的接口由jqGrid定义。要在自定义格式化程序中包含其他参数,您必须修改jqGrid的源代码。
好消息是您并不需要扩展标准自定义格式化程序。而不是你想要的只是共享代码。因此,您可以将公共代码定义为类似
的函数function imageLinkFormatter(cellval, options, rowObject, icon, link_class, link_action) {
var img = '<span class="ui-icon ' + icon + ' icon"><span/>';
var link = '<a href="#' + link_action + '/id/' + rowObject.id + '" class="' +
link_class + '" rel="' + rowObject.id + '">' + img + '</a>';
return link;
}
并使用其他参数从网格的不同列的自定义格式化程序中调用该函数。
colModal: [
{name: 'col1', formatter: function (cellvalue, options, rowObject) {
return imageLinkFormatter(cellvalue, options, rowObject,
'ui-icon-pencil', 'edit-link-class', 'Edit');
}},
{name: 'col2', formatter: function (cellvalue, options, rowObject) {
return imageLinkFormatter(cellvalue, options, rowObject,
'ui-icon-plus', 'add-link-class', 'Add');
}},
{name: 'col2', formatter: function (cellvalue, options, rowObject) {
return imageLinkFormatter(cellvalue, options, rowObject,
'ui-icon-trash', 'del-link-class', 'Delete');
}},
...
]
这是你想要的吗?
答案 1 :(得分:7)
在列定义中定义formatoptions
colModal: [
{name: 'col1',
formatter: imageLinkFormatter,
formatoptions: {
icon: 'ui-icon-pencil',
link_class: 'edit-link-class',
action: 'Edit'
}},
{name: 'col2', formatter: imageLinkFormatter, formatoptions: {icon: 'ui-icon-plus', link_class: 'add-link-class', action: 'Add'}},
{name: 'col3', formatter: imageLinkFormatter, formatoptions: {icon: 'ui-icon-trash', link_class: 'del-link-class', action: 'Add'}}
...
]
然后您可以在自定义格式化程序
中访问它function imageLinkFormatter(cellval, options, rowObject) {
var img = '<span class="ui-icon ' + options.colModel.formatoptions.icon + ' icon"><span/>';
var link = '<a href="#' + options.colModel.formatoptions.action + '/id/' + rowObject.id + '" class="' +
options.colModel.formatoptions.link_class + '" rel="' + rowObject.id + '">' + img + '</a>';
return link;
}