如何动态绑定jqGrid colModel Formatter

时间:2013-04-07 23:49:43

标签: asp.net jqgrid

我正在尝试动态绑定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 });
    }

2 个答案:

答案 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的使用示例。