【问题标题】:Sorting Before Event in jQuery jqGrid在jQuery jqGrid中对事件进行排序
【发布时间】:2026-01-11 02:40:01
【问题描述】:

我正在开发 jQuery 的 jqGrid,但我没有在我的 jqGrid 中使用分页。我的代码获取超过 1000 行数据,所有数据都显示在 jqGrid 中,无需分页并使用 loadonce: true 属性。现在我的要求是,当用户对任何列进行排序时,排序数据需要 3-5 秒,所以我想在那个时候显示加载图像。我写了

beforeRequest: function () { jQuery(".imgLoading").show(0);}, 
gridComplete: function () {jQuery(".imgLoading").hide(0);}

这两个事件,当数据来自服务器并与服务器一起操作时,它可以正常工作。

但我想在客户端使用loadonce: true 进行排序,也想显示加载图像,但我不知道在哪个事件上我会写下图像显示隐藏代码。

请告诉我jqGrid的BeforeSortEventAfterSortEvent的名字。

我检查了这个 URL:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events,但没有找到正确的事件。

请帮帮我.....

【问题讨论】:

  • 在填充 1000 行(大部分是不可见行)所需的 3-5 秒内,Web 浏览器完全繁忙。恐怕,它不能显示任何东西。为什么你想让那个网络浏览器做一些不需要的工作?如果用户只能看到大约 50 行,为什么要用 1000 行填充页面?为什么你不想使用 local 数据分页?在这种情况下,您几乎可以立即显示,例如 10000 行而不是 1000 行。
  • @Oleg 我认为 Oleg 意味着使用分页,如果您使用分页,您将立即看到已排序行的较小子集,例如 50 与 1000。

标签: javascript jquery jqgrid


【解决方案1】:

试试:

onSortCol: function(index, iCol, sortorder) {
    jQuery(".imgLoading").show(0);
},
gridComplete: function() { 
    jQuery(".imgLoading").hide(0);
}

编辑

既然您说alert() 会触发,我认为您的问题在于您显示/隐藏那些.imgLoading 元素的方式。

试试:

onSortCol: function(index, iCol, sortorder) {
    alert("I'm about to SHOW the loading message");
    $(".imgLoading").show();
},
gridComplete: function() { 
    alert("I'm about to HIDE the loading message");        
    $(".imgLoading").hide();
}

确保这两个 alert() 已熄灭,如果它们熄灭了,那么您尝试显示/隐藏的 .imgLoading 元素仍有问题。

【讨论】:

  • @GauravAgrawal 当您单击对列进行排序时,加载器消息是否显示?如果您将alert("Test") 放在那里,当您单击列标题进行排序时会触发吗?
  • 当我使用警报消息时它可以工作,但如果我从代码中删除警报消息它就不起作用。
  • @GauravAgrawal 好的,所以您显示/隐藏 .imgLoading 元素的方式有问题。在我的回答中查看我的编辑...
最近更新 更多