我尝试使用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
});
答案 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: false
,rowList: []
,pgbuttons: false
,pgtext: null
)我建议您删除,因为如果您不使用,则有mo含义pager
或toppager
参数。