【问题标题】:jqgrid trigger("reloadGrid") causing IE to show Stop running script dialogjqgrid trigger("reloadGrid") 导致 IE 显示停止运行脚本对话框
【发布时间】:2011-07-06 20:37:21
【问题描述】:

我已经在我的 asp.net MVC 应用程序中使用 jqgrid 很长时间了

今天突然间 IE 显示“停止运行脚本”对话框

 A script on this page is causing your web browser to run slowly. If it continues to run, 
 your computer might become unresponsive.

我已将其范围缩小到在一些 ajax 运行后尝试重新加载网格的代码。

如果我取出以下内容

$("#shippingscheduletable").jqGrid().trigger("reloadGrid");

它没有显示的对话框,当我把它放回去时,它又出现了。 几个月来,此应用程序没有任何变化,并且运行良好。

我已经浏览了 jqgrid 绑定到的控制器操作,它运行得很好,它不会卡在任何循环或任何东西中。

它在任何其他浏览器中都不会显示任何错误。关于如何解决它的任何想法?

【问题讨论】:

  • 你是偶然使用固定/特定的 jQuery 版本还是“最新”的版本?
  • 你成功了!我正在使用最新的。这是1.4.4。我强迫它是 1.4.2 并且瞧工作得很好。将您的评论作为答案,我会为您服务。谢谢!

标签: jquery asp.net-mvc jqgrid


【解决方案1】:

reloadGrid 的正确用法是

$("#shippingscheduletable").trigger("reloadGrid");

(见jqGrid documentation)而不是

$("#shippingscheduletable").jqGrid().trigger("reloadGrid");

reloadGrid 的更复杂且记录较少的参数可以在the answer 中找到。

【讨论】:

  • 谢谢。进行您推荐的更改使其可以与 1.4.4 一起使用。我的方式在以前的版本中运行良好,但不适用于 1.4.4。
  • 我还注意到在某些事件期间向最近版本中的元素添加功能时 IE 速度的这种“降低”。比我的回答更好,因为它更直接地解决了这个问题,而不是避免它:)
  • @Mark Schultheiss & @twal:我同意你的看法。速度的最大问题在于以下几个地方:1)一个不要使用gridview:true 2)一个使用afterInsertRow 这是邪恶的。 3) 使用getDataIDs() 枚举所有行并使用getCellsetCell$('#'+rowid) 修改每一行。我建议更快捷的方式here
  • @Mark Schultheiss & @twal:另见我最近发布的the feature request
【解决方案2】:

您是偶然使用固定/特定的 jQuery 版本还是“最新”的版本? 更改会导致某些 IE 实现减慢速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多