我正在尝试动态绑定jqGrid列Model的格式化程序。我动态地构建colModel
数组,如下所示。
ColModel:[{name:Id,width:50,formatter:customerLinkFormatter}]
我已将格式化程序扩展如下
$.extend($.fn.fmatter, {
customerLinkFormatter: function (cellvalue, options, rowdata) {
return '<a href="CustomerEdit.aspx?id=' + rowdata[options.colModel.name] + '"> ' + cellvalue + '</a>';
}
});
但是Id列没有显示任何链接。请帮我搞清楚。
以下是代码的一部分
$(document).ready(function () {
"use strict";
$.ajax({
type: "POST",
url: "../Hdlr.ashx?",
datatype: "json",
success: function (msg) {
jqcolNames = msg.ColNames,
jqcolModel = msg.ColModel,
PopulateGrid();
},
error: function (msg) {
alert(' error ' + msg.responseText);
}
});
});
function PopulateGrid() {
$('#list').jqGrid({
url: "../Hdlr.ashx?",
colNames: jqcolNames,
colModel: jqcolModel,
jsonReader: {
cell: "",
id: "0",
repeatitems: false
},
rowNum: 10,
rowList: [10, 20, 30],
pager: "#pager",
rownumbers: true,
viewrecords: true,
search: false,
caption: "Grid Information"
}).jqGrid("navGrid", "#pager", { edit: false, add: false, del: false, search: false });
}
答案 0 :(得分:0)
尝试定义formatter
就像定义一个函数一样:
function customerLinkFormatter(cellvalue, options, rowdata) {
return '<a href="CustomerEdit.aspx?id=' + rowdata.name + '"> ' + cellvalue + '</a>';
};
答案 1 :(得分:0)
如果您延长了$.fn.fmatter
,那么您应该使用字符串“customerLinkFormatter”而不是直接使用函数customerLinkFormatter
:
colModel:[{name: "Id", width: 50, formatter: "customerLinkFormatter"}]
如果您之前未使用相应的字符串值定义name:Id
变量,则Id
的使用也是错误的。
你动态地写了关于jqGrid的绑定格式化程序。您只需更改formatter
内的colModel
属性即可。可以使用setColProp
方法进行示例。请参阅here setColProp
的使用示例。