11

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

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

我相信我们可以使用beforeRefresh回调将网格设置datajsonlocal但我不清楚如何配置该beforeRefresh方法 - 我不太了解文档。

4

2 回答 2

22

你不是唯一有问题的人。我之前回答过同样的问题。要从服务器重新加载网格内容,您应该将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');
    }
  });

我从一个老问题修改了一个例子。在这里,如果您单击刷新按钮,您可以实时查看代码的工作方式。

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

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

顺便说一句,可以使用navOptionsjqGrid 的选项来指定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");
于 2010-09-22T19:00:42.043 回答
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>
于 2011-01-06T14:30:05.903 回答