【问题标题】:how to disable data retrieval on jqgrid load如何在 jqgrid 加载时禁用数据检索
【发布时间】:2012-02-21 08:28:56
【问题描述】:

jqgrid 用于显示来自服务器的库存状态。使用 url 参数中的控制器以 json 格式检索数据:

url: 'Grid/GetData'

获取数据(即使是 0 行)需要一些时间。这会导致页面加载出现明显延迟。

如何在初始 jqgrid 加载时禁用 GetData 控制器调用? 在初始加载时应该出现空网格,没有行。

如果用户发出这样的命令,则应检索数据:

  • 已输入搜索条件
  • 在搜索工具栏中按下回车
  • jqgrid 工具栏中的刷新按钮被按下。

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    你应该在开头使用datatype: 'local'。如果要从服务器加载数据,则应将 setGridParam 方法的 datatype 更改为 'json' 并触发 reloadGrid

    在像主/详细网格这样的许多场景中,我使用这种方式。一开始详细的网格有datatype: 'local'。如果将在主网格中选择一行,我将 datatype 设置为 'json' 以获取详细网格并重新加载它。在详细网格的postData 中,将使用主网格中选定行的 id。

    【讨论】:

    • 谢谢。我添加了 datatype:'local' 并在 loadComplete 中添加了 $grid.setGridParam({datatype:'json'}) 如果发出任何后续命令,这似乎可以正常加载数据。我希望这不会造成任何副作用
    • @Andrus:不客气!我认为您可以在loadComplete 中使用$(this).jqGrid('setGridParam', {datatype: 'json'});。如果您稍后调用.trigger('reloadGrid') 或者如果用户点击排序、分页等网格将在第一时间从服务器重新加载。
    • 谢谢。 Site.Master 包含$.jgrid.no_legacy_api = true。为什么我的电话没有导致错误? loadComplete 方法处理程序定义在包含的 .js 文件中,该文件称为 loadComplete。在这种情况下 $(this) 不起作用,我将其更改为 $grid.jqGrid('setGridParam', { datatype: 'json' })
    • @Andrus:你如何调用另一种方法? this 内部的 loadComplete<table> 的 DOM,因此您可以使用 anotherMethod.call(this, data)。重要的是你应该定义anotherMethod 而不是function anotherMethod(data),它在严格模型中不支持this。如果您定义为var anotherMethod = function(data) 或另一个对象的方法,您可以在anotherMethod 中使用this。关于另一个问题:您应该验证 where 您使用$.jgrid.no_legacy_api = true。 if应该放在包含grid.locale-en.js之后但之前 jquery.jqGrid.min.js.
    • 最好将此明确地作为方法参数传递。 anotherMethod.call(this, data) 不好。 call() 永远不应该使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多