【问题标题】:JqPivot and data load by ajaxJqPivot 和 ajax 加载数据
【发布时间】:2015-06-12 04:38:05
【问题描述】:

有人可以发布一个演示或一段代码,以举例说明如何使用 jqpivot 和使用 ajax 加载数据。 谢谢。

【问题讨论】:

    标签: jqgrid free-jqgrid


    【解决方案1】:

    我建议你查看免费 jqGrid 的源代码。看the part的代码。好像

    jqPivot: function (data, pivotOpt, gridOpt, ajaxOpt) {
        return this.each(function () {
            var $t = this, $self = $($t), $j = $.fn.jqGrid;
    
            function pivot(data) {
                ...
            }
    
            if (typeof data === "string") {
                $.ajax($.extend({
                    url: data,
                    dataType: "json",
                    success: function (data) {
                        pivot(jgrid.getAccessor(data, ajaxOpt && ajaxOpt.reader ? ajaxOpt.reader : "rows"));
                    }
                }, ajaxOpt || {}));
            } else {
                pivot(data);
            }
        });
    }
    

    您几乎可以直接得到问题的答案。您需要指定以 JSON 形式提供输入数据的服务器的 URL。不直接支持其他数据格式("xml""jsonp"等),但是可以使用ajaxOpt参数覆盖Ajax调用的参数。另外需要了解的是,jqGrid 使用$.jgrid.getAccessor 方法从服务器响应中读取数据。默认数据格式如下:

    {
        "rows": ...
    }
    

    如果您使用 if without Ajax,“rows”的值应该与jqPivotdata 参数具有相同的格式。如果你有例如

    {
        {
            "myRoot": {
                "myData": ...
            }
        }
    }
    

    那么你可以使用jqPivot的第4个参数(ajaxOpt)作为

    { reader: "myRoot.myData" }
    

    如果服务器的响应是数据数组:

    [
        ...
    ]
    

    或者它有一些非标准的形式,而不是你可以使用reader 的函数形式。例如

    $("#grid").jqGrid("jqPivot", "/myUrl", {
        xDimension: [{...}],
        yDimension: [{...}, ...],
        aggregates: [{...}],
    },
    {
        iconSet: "fontAwesome",
        cmTemplate: { autoResizable: true, width: 80 },
        shrinkToFit: false,
        autoResizing: { compact: true },
        pager: true,
        rowNum: 20,
        rowList: [5, 10, 20, 100, "10000:All"]
    },
    {
        reader: function (obj) { return obj; },
        contentType: "application/json; charset=utf-8",
        type: "POST",
        error: function (jqXHR, textStatus, errorThrown) {
            alert('HTTP status code: ' + jqXHR.status + '\n' +
                  'textStatus: ' + textStatus + '\n' +
                  'errorThrown: ' + errorThrown);
            alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText);
        }
    });
    

    上面的代码在函数中指定了读取器,它直接使用所有响应数据(没有带有rows属性的对象)。指定jQuery.ajaxcontentTypetype参数以及回调函数error

    如果所有选项看起来都太难了,你可以直接在代码中加载数据,例如直接调用 jQuery.ajax 并调用 jqPivot 数据加载之后(在success 回调或done)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-08
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 2012-03-21
      • 2013-01-03
      相关资源
      最近更新 更多