使用Ajax Call为JQGrid动态加载列

时间:2013-03-14 10:54:59

标签: asp.net-mvc jqgrid

我需要动态地将列加载到Jqgrid并尝试关注jqGrid and dynamic column binding

我正在尝试MVC。对于列名,我从表中获取(其中包含要在GRID中显示的列的列表)并返回简单的Json数据。

我如何为ColModel实施。例如:我需要动态发送这样的JSon对象

     {name: 'Airport', formatter: UrlFmatter, width: 95, align: "center", index: 'AIRPORT', searchoptions: { sopt: ['eq', 'ne', 'cn']} }
  {name: 'Country', width: 100, align: "center", index: 'Country', searchoptions: { sopt: ['eq', 'ne', 'cn']} }

我的设计应该如何发送json来设置colModel?

我的UrlFmatter代码

function UrlFmatter(cellvalue, options, rowObject) {
                    return "<a href='DetailResult?airportname=" + options.rowId + "' >" + cellvalue + "</a>";
                }

如何根据您的格式和格式化的答案编写? 感谢

1 个答案:

答案 0 :(得分:1)

我认为您在JSON内部发送有关格式化程序(formatter: UrlFmatter)的信息时遇到问题。 JSON字符串不支持函数作为数据类型。解决问题的最简单方法似乎是以与标准格式化程序相同的方式注册格式化程序。例如,您希望格式化程序的名称为"myUrlFormatter",您可以使用以下

(function ($) {
    'use strict';
    /*jslint unparam: true */
    $.extend($.fn.fmatter, {
        myUrlFormatter: function (cellValue, options) {
            // you should place here the code of 
            // your custom formatter UrlFmatter
        }
    });
    $.extend($.fn.fmatter.myUrlFormatter, {
        unformat: function (cellValue, options, elem) {
            // you should place here the code of 
            // your custom unformatter
        }
    });
}(jQuery));

您应该在 jquery.jqGrid.min.js之后(或jquery.jqGrid.src.js之后)包含代码。注册格式化程序后,您可以在colModel中将其用作

{name: "Airport", index: "AIRPORT", formatter: "myUrlFormatter", width: 95,
    align: "center", searchoptions: { sopt: ["eq", "ne", "cn"]} }

因此formatter属性的值将是字符串formatter: "myUrlFormatter")而不是函数(formatter: UrlFmatter)。