【问题标题】:How to get jqGrid reload to go to server?如何让 jqGrid 重新加载到服务器?
【发布时间】:2011-04-15 21:35:11
【问题描述】:

我们在 loadonce 设置为 true 的网格上使用 jqGrid 导航器重新加载按钮。

reload 按钮目前不会返回服务器获取数据 - 我们如何让 reload 去服务器获取最新数据?

我相信我们可以使用beforeRefresh 回调将网格data 设置为json 而不是local,但我什至不清楚如何配置beforeRefresh 方法——我不太清楚了解文档。

【问题讨论】:

    标签: jquery jqgrid navigator


    【解决方案1】:

    你不是唯一有问题的人。我之前回复过the same question。要从服务器重新加载网格内容,您应该将 datatype 参数重置为原始值“json”或“xml”,然后刷新网格。例如

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

    更新:要调用 beforeRefresh 事件处理程序中的行,您可以执行以下操作

    jQuery("#list").jqGrid('navGrid','#pager',
      { edit:false,view:false,add:false,del:false,search:false,
        beforeRefresh: function(){
            alert('In beforeRefresh');
            grid.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');
        }
      });
    

    我从一个老问题修改了一个例子。 Here如果你点击刷新按钮,你可以看到代码是如何工作的。

    更新 2Free jqGrid 支持一些新选项。 reloadGrid 事件支持fromServer: true 参数,可用于强制从服务器重新加载数据,navGrid 支持reloadGridOptions 选项,可用于指定单击刷新按钮时使用的reloadGrid 选项。所以上面的代码可以是

    $("#list").jqGrid("navGrid", {
        edit: false,
        add: false,
        del: false,
        search: false,
        reloadGridOptions: { fromServer: true }
    });
    

    顺便说一句,可以使用 jqGrid 的 navOptions 选项来指定 navGrid 的默认选项(参见 wiki 文章)。它允许编写类似的代码

    $("#link").jqGrid({
        // all typical jqGrid parameters
        datatype: "json", // or "xml"
        loadonce: true,
        pager: true, // no empty div for page is required
        navOptions: {
            edit: false,
            add: false,
            del: false,
            search: false,
            reloadGridOptions: { fromServer: true }
        }
    }).jqGrid("navGrid");
    

    【讨论】:

    • 谢谢 - 单击重新加载按钮时如何运行此代码?如果这是您所暗示的,我不清楚如何配置导航栏以执行 beforeRefresh 方法。
    • @Marcus:如果很容易。我在答案中包含了相应的代码。
    • @Oleg,我试过这样做,但是一旦我点击刷新按钮,分页就不起作用了。
    • @SukeshKumar:如果您遇到分页问题,​​您可能应该在其他一些回调中重置datatype,例如onPaging(例如,请参阅the answer)。
    【解决方案2】:

    我已经尝试了以下配置并且它有效。

    <script type="text/javascript">
    jQuery(function() {
        jq("#YOUR-GRID-ID").jqGrid({
            ...
            loadonce: true,
            ...
        });
        jQuery("#refresh_YOUR-GRID-ID").click(function(){
            jQuery("#YOUR-GRID-ID").setGridParam({datatype: 'json'});
            jQuery("#YOUR-GRID-ID").trigger("reloadGrid");
        });
    });
    </script>
    

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多