这个问题源于我看了this Oleg的答案以及其中的演示网格。
网格完成
:
This fires after all the data is loaded into the grid and all other processes are complete. Also the event fires independent from the datatype parameter and after sorting paging and etc.
加载完成
:
This event is executed immediately after every server request. data Data from the response depending on datatype grid parameter
从该文档我了解到 gridComplete
在绘制网格结束时触发,而 loadComplete
在 jqGrid 完成与后端的通信后触发。
所以我想知道 - 为什么在演示中,loadComplete
用于更改单元格的颜色而不是 gridComplete
?
最佳答案
我认为这个问题被许多 jqGrid 用户问过。所以知道答案很有趣。
我个人更喜欢使用 loadComplete
。如果您检查我发布的所有示例中的代码,您会发现 gridComplete
仅当原始发帖者将其发布在问题中并且我会修改一些代码时。我更喜欢使用 loadComplete
,因为 loadComplete
的一些优点和 gridComplete
的缺点。
loadComplete
的优点如下:
- 这是最后一个回调,如果整个网格体 将被重新加载,将被调用。例如,在从服务器将页面加载到网格上之后。重要的是要理解,如果用户更改某些列的排序或设置过滤器或选择网格的另一页;将重新加载网格体。
loadComplete
有参数data
表示整页本地数据或从服务器加载的完整数据。
另一方面,gridComplete
将从内部 updatepager
(参见 here)调用(在当前版本的 jqGrid 4.4.4 中),将是从 delRowData
(参见 here)、addRowData
(参见 here)和 clearGridData
(参见 here)方法调用;除了 addXmlData
(参见 here )和 addJSONData
(参见 here )。这不是人们最想要的。
gridComplete
的另一个缺点是,如果检查 addXmlData
(请参阅 here)和 addJSONData
(请参阅 here)代码,您可以看到 从哪里 updatepager
被调用,因此 gridComplete
将被调用。如果使用 loadonce: true
并且内部参数 data
和 _index
将填充从服务器返回的完整数据。使用loadonce: true
时可以看到;回调 gridComplete
将在从服务器加载第一页数据后调用。此时 data
和 _index
只包含页面的数据。另一方面,loadComplete
将在处理完所有从服务器返回的数据并保存在本地 data
和 _index< 之后调用
.
如果您从服务器加载数据并且不使用 loadonce: true
选项,clearGridData
、addRowData
和 delRowData
然后你可以使用 gridComplete
而不是 loadComplete
。
关于javascript - loadComplete 和 gridComplete 事件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437218/