我认为许多jqGrid用户都会问这个问题。所以了解答案是很有趣的。
我个人更喜欢使用loadComplete
。如果您查看我发布的所有示例代码,您会发现只有当原帖发布它并且我稍微修改了一点代码时才会使用gridComplete
。我更喜欢使用loadComplete
,因为它具有一些优势,而gridComplete
则存在一些缺点。
下面是loadComplete
的优势:
loadComplete
具有代表本地数据的完整页面或从服务器加载的完整数据的data
参数。gridComplete
将会被调用(在当前版本的jqGrid 4.4.4中)从内部的updatepager
(参见这里),它将会从delRowData
(参见这里),addRowData
(参见这里)和clearGridData
(参见这里)方法中被调用;此外,还有addXmlData
(参见这里)和addJSONData
(参见这里)。 这并不是大多数人想要的。另一个缺点是,如果查看addXmlData
(请参见此处)和 addJSONData
(请参见此处),可以看到从这里调用了updatepager
和因此会调用gridComplete
。loadonce: true
内部参数 data
和 _index
将填充从服务器返回的完整数据。当使用loadonce: true
时,回调gridComplete
将在从服务器加载第一页数据后被调用。此时,data
和_index
仅包含该页面的数据。另一方面,所有从服务器返回并在本地保存在data
和_index
中处理的数据都会在稍后调用loadComplete
。
如果从服务器加载数据并且不使用loadonce: true
选项,则可以使用gridComplete
而不是loadComplete
来代替clearGridData
,addRowData
和delRowData
。
1858: case "xmlstring":
if(lcf) {ts.p.loadComplete.call(ts,dstr);}
1869: case "jsonstring":
if(lcf) {ts.p.loadComplete.call(ts,dstr);}
1881:
case "local":
case "clientside":
if(lc) { lc.call(ts,req); }
populate
和 updatePager
经常一起使用,所以当进行排序和分页时,会调用两个回调函数。不同之处在于,loadComplete
会传递一个额外的参数。