【问题标题】:jqgrid reloadGrid with loadonce set to truejqgrid reloadGrid 与 loadonce 设置为 true
【发布时间】:2011-07-20 20:08:50
【问题描述】:

我在一页中使用了两个 jqgrid。第二个网格我使用了loadonce: true,因为我需要在第二个网格中进行列排序。我需要在服务器回发后重新加载两个网格。 (需要在第二个网格中显示更新的值)。第一个网格重新加载很好,因为它不会使用loadonce 属性。我的问题是我们可以同时使用loadonce 属性和reloadGrid 吗? (通过将loadonce 属性动态设置为网格)或者在这种情况下我是否需要进行服务器端排序?请指教。提前致谢。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    如果您使用loadonce:true jqGrid,请在第一次从网格加载数据后将datatype 参数更改为“本地”。所有下一个网格重新加载(排序、分页、过滤)都在本地工作。如果您想再次从服务器刷新网格数据,您应该将datatype 设置为其原始值(“json”或“xml”)。例如:

    $("#list").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
    

    更新: Free jqGrid 支持 reloadGridfromServer: true 选项,从第一个版本开始(从版本 4.8 开始)。所以可以使用类似的代码

    $("#list").trigger("reloadGrid", { fromServer: true, page: 1 });
    

    执行与上述相同的操作。主要优点:此类代码适用于datatype"json""jsonp""xml" 等)的任何初始值。免费 jqGrid 将 datatype 的原始值保存在内部 dataTypeOrg 中,然后将其更改为 "local"

    free jqGrid 另一个有用的选项是navGrid 的参数reloadGridOptions,它允许指定reloadGrid 的默认选项。因此可以使用例如

    loadonce: true,
    navOptions: { reloadGridOptions: { fromServer: true } }
    

    jqGrid 的选项,另外为navGrid 设置默认值。结果,点击导航栏的“重新加载”按钮将从服务器重新加载网格,而不是本地重新加载。

    【讨论】:

    • 非常感谢奥列格。这太棒了。它有效,这正是我需要的。
    • @Oleg 和 Sam,你们对 this question 有什么想法吗?我正在尝试每 10 秒从服务器刷新一次数据,并确保我拥有最新数据
    • 问题把我吓坏了...感谢您的帮助:)
    • 我想在加载数据后将其转换为本地,所以我在 loadComplete 中使用jQuery("#memberGrid").setGridParam({datatype:'local', data:mdata}).trigger('reloadGrid');,但页面没有在本地更改?
    • @jeffery_the_wind:不客气!我很高兴您发现该选项很有帮助。我不仅尝试在免费的 jqGrid 中实现大型新功能,还尝试进行 minor 更改,这使得 jqGrid 的使用更加容易。 fromServer: trueforceClientSorting: true 是两个选项,在 loadonce: true 场景中可能非常有用。
    【解决方案2】:

    Nice 上周一直在尝试,解决方案很完美 使用

    jQuery("#datalist").jqGrid().setGridParam(
        {
            datatype:'xml', 
            page:1, 
            url : '<%=request.getContextPath()%>/PreviewReport?cmd=1&fromdate='+vfromDate+'&todate='+vtoDate+'&status='+vstatus+'&keyword='+vkeyword+'&mdn='+vmdn+'&filetype='+vfiletype
        }
    ).trigger("reloadGrid");
    

    使用 loadonce:false

    重新加载数据

    【讨论】:

      【解决方案3】:

      只是说,对我来说,以下行不足以刷新我的loadonce:truejqGrid 中的数据:

      $("#MikesGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
      

      调用该行后,我尝试调用加载 JSON 数据并用它填充 jqGrid 的代码,但它没有刷新网格中的行。

      我的解决方案是强制卸载 jqGrid,然后然后调用我的函数重新创建它。

      $("#MikesGrid").jqGrid('GridUnload');
      

      也许我只是运气不好。

      顺便说一句,当我有机会时,我将记录我如何编写一个通用 JavaScript 函数来向任何 jqGrid 添加两个按钮,一个用于刷新 (loadonce) 数据,另一个按钮用于将 jqGrid 数据导出到真正的 Excel 文件,使用我的库:

      Export jqGrid to an Excel file

      我喜欢可重用的代码!

      【讨论】:

        【解决方案4】:
        $("#shoppingCatalog").jqGrid('GridUnload');
        

        将删除结构,然后您的代码可以使用来自下一个服务器回调的数据重建网格。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-11
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 1970-01-01
          相关资源
          最近更新 更多