jqGrid - beforeProcessing不在4.6.0中触发

时间:2014-10-09 21:21:34

标签: jquery jqgrid

我尝试使用beforeProcessing在网格中呈现之前更改数据,但每次都会跳过该功能。我正在使用jqGrid 4.6.0,所以我不确定我做错了什么。下面是我设置一切的代码。如果您需要更多细节,请与我们联系。任何帮助都会很棒!

        $gridTable.jqGrid({
            data: fixData(),
            datatype: "local",
            colNames:columnNames,
            colModel:columnModel,
            autowidth : true,
            multiSort: true,
            sortname: sortName,
            sortorder: sortOrder,
            viewrecords: false,
            rowNum: 20000,
            rowList: [],        // disable page size dropdown
            pgbuttons: false,   // disable page control like next, back button
            pgtext: null,
            onSortCol: onSort,
            gridComplete: onGridComplete,
            beforeProcessing: function () {
              console.log("blah");
            },
            shrinkToFit:false
        });

1 个答案:

答案 0 :(得分:0)

beforeProcessing的目标是提供修改从服务器通过Ajax异步返回的数据的可能性。在从服务器加载数据的情况下,在创建网格时以及在创建网格之后的下一行JavaScript代码中没有数据。数据将在稍后的未知时刻从服务器返回。特别是对于引入beforeProcessing的情况。 jqGrid进行$.ajax调用,并在开始时直接在beforeProcessing回调success内调用$.ajax回调。 beforeProcessing回调允许修改数据或跳过服务器响应的处理(参见jqGrid代码的the lines)。

您的代码使用datatype: "local"以及您使用data选项提供的所有输入数据。在这种情况下根本没有问题。如果您需要修改输入数据,可以直接进行修改。

var mydata = fixData();

// now one can make any modifications of mydata.

// now one can create jqGrid using modified mydata as the input data.
$gridTable.jqGrid({
    data: mydata,
    datatype: "local",
    ...
    gridview: true,
    autoencode: true
});

我在上面的代码中包含两个选项gridview: true,它们提高了网格填充的性能,autoencode: true强制jqGrid将输入数据解释为纯数据,而不是HTML片段。对于输入数据中的&<>等特殊HTML字符集,将始终正确显示。

其他一些选项(viewrecords: falserowList: []pgbuttons: falsepgtext: null)我建议您删除,因为如果您不使用,则有mo含义pagertoppager参数。