0

我正在尝试动态绑定 jqGrid 列模型的格式化程序。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 });
    }
4

2 回答 2

0

尝试定义formatter就像定义一个函数:

  function customerLinkFormatter(cellvalue, options, rowdata) {
               return '<a href="CustomerEdit.aspx?id=' + rowdata.name + '"> ' + cellvalue + '</a>';
            };
于 2013-04-08T04:31:26.360 回答
0

如果你扩展了$.fn.fmatter,那么你应该使用字符串“customerLinkFormatter”而不是直接使用函数customerLinkFormatter

colModel:[{name: "Id", width: 50, formatter: "customerLinkFormatter"}]

如果您之前没有使用相应的字符串值定义变量,那么使用的name:Id也是错误的。Id

您写了关于动态绑定 jqGrid 的格式化程序。您只需formatter更改colModel. 例如可以使用setColProp一种方法。请参阅此处的使用示例setColProp

于 2013-04-08T05:58:59.793 回答