loadComplete和gridComplete事件有什么区别?

Gil*_*tes 14 javascript datagrid jqgrid

这个问题源于我看了后这个答案奥列格和演示格架在里面.

gridComplete:

在将所有数据加载到网格中并且所有其他进程完成后,将触发此操作.此事件也会独立于数据类型参数并在对分页等进行排序后触发.

loadComplete:

每个服务器请求后立即执行此事件.data响应中的数据取决于数据类型grid参数

从那些文档中我理解gridComplete在绘制网格结束时loadComplete触发,并在jqGrid完成与后端的通信后触发.

所以我想知道 - 为什么在演示中,loadComplete用于改变细胞的颜色而不是gridComplete

Ole*_*leg 26

我认为jqGrid的许多用户都会问这个问题.所以知道答案很有意思.

我个人更喜欢使用loadComplete.如果你检查我发布的所有例子中的代码,你会发现gridComplete只有当原始海报在问题中发布它并且我会修改一些代码.我更喜欢使用,loadComplete因为它有一些优点loadComplete和缺点gridComplete.

以下是优点loadComplete:

  • 如果整个网格体将被重新加载,它将被调用的最后一个回调.例如,从服务器加载网格上的页面之后.重要的是要理解,如果用户更改某些列的排序或设置过滤器或选择网格的另一页; 网格主体将被重新加载.
  • loadComplete具有data表示本地数据的整页或从服务器加载的完整数据的参数.

另一方面gridComplete将从内部updatepager(参见此处)调用(在当前版本的jqGrid 4.4.4中),这将从delRowData(参见此处),addRowData(参见此处)和clearGridData(参见此处)方法调用; 除了addXmlData(见这里)和addJSONData(见这里).这不是人们最想要的.

一个人的另一个缺点gridComplete可以看出,如果一个人检查addXmlData(见这里)和addJSONData(见这里)的代码,从哪里 updatepager调用,因此gridComplete将被调用.如果使用loadonce: true和内部参数data,_index将填充从服务器返回的完整数据.人们可以看到使用时loadonce: true; 在gridComplete从服务器加载第一页数据后将调用回调.在这一刻data,并_index只包含页面的数据.在另一边loadComplete会被调用后,以后从服务器返回的所有数据进行处理和保存在本地data_index.

如果从服务器加载数据,而如果你不使用loadonce: true选项,clearGridData,addRowDatadelRowData那么你可以使用gridComplete的替代loadComplete.