繁体   English   中英

loadComplete和gridComplete事件有什么区别?

[英]What the difference between loadComplete and gridComplete events?

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

gridComplete

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

loadComplete

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

从那些文档中我了解到gridComplete在绘图网格的末尾触发,并且在jqGrid完成与后端的通信后, loadComplete触发。

所以我想知道 - 为什么在演示中, loadComplete用于更改单元格的颜色而不是gridComplete

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

我个人更喜欢使用loadComplete 如果您检查我发布的所有示例中的代码,只有当原始海报在问题中发布时才会找到gridComplete ,我会修改一些代码。 我更喜欢使用loadComplete的,因为一些优势loadComplete和缺点gridComplete

以下是loadComplete优点:

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

在另一边gridComplete将调用(jqGrid的4.4.4的最新版本)从内部updatepager (见这里 ),这将被称为delRowData (见这里 ), addRowData (见这里 )和clearGridData (见这里 )方法; 除了 addXmlData (见这里 )和addJSONData (见这里 )。 这不是人们最想要的。

gridComplete另一个缺点是可以看到是否检查了addXmlData的代码(请参阅此处 )和addJSONData (请参阅此处,其中调用了updatepager ,因此将调用gridComplete 如果使用loadonce: true ,则内部参数data_index将填充从服务器返回的完整数据。 在使用loadonce: true时可以看到loadonce: true ; 从服务器加载第一页数据后,将调用回调gridComplete 此时data_index仅包含页面的数据。 另一方面,在处理完从服务器返回的所有数据并将其本地保存data_index 之后,将调用loadComplete

如果从服务器加载数据,如果不使用loadonce: true选项, clearGridDataaddRowDatadelRowData则可以使用gridComplete而不是loadComplete

查看jqGrid (source)的源代码,您可以看到gridComplete仅在grid.base的一行上调用。

1725: if($.isFunction(ts.p.gridComplete)) {ts.p.gridComplete.call(ts);}

这一行来自updatePager函数。

您可以在populate函数中找到loadComplete (第1757行)。 gridComplete不同,它传递了一个额外的参数。 两个回调都接收this的引用,但loadComplete也接收从服务器返回的数据(或在本地传递):

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); }

问题是,函数populateupdatePager经常串联发生,因此您可以看到,在排序和分页时,都会调用两个回调。 不同的是, loadComplete传递了一个额外的参数。

我可能还没有遇到过细微的差别......而且可能会出现一个被调用而另一个没有被调用的情况,但我注意到在排序和分页时,都会被调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM