如何让 jqGrid 重新加载到服务器?

发布于 2024-09-24 04:59:49 字数 389 浏览 8 评论 0原文

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

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

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

We use the jqGrid navigator reload button on a grid with loadonce set to true.

The reload button currently does NOT go back to the server to get the data - how can we get the reload to go to the server to get the latest data?

I believe we can use the beforeRefresh callback to set the grid data to json instead of local but I'm not clear how to even configure the beforeRefresh method - I don't really understand the docs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽清梦 2024-10-01 04:59:49

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

顺便说一句,我们可以使用 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");

You are not the only person which has the problem. I answerd to the same question before. To reload the grid content from the server you should reset the datatype parameter to original value "json" or "xml" and then refresh the grid. For example

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

UPDATED: To call the line inside of beforeRefresh event handler you can do following

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');
    }
  });

I modified an example from am old question. Here if you click on the refresh button you can see live how the code work.

UPDATED 2: Free jqGrid supports some new options. reloadGrid event supports fromServer: true parameter which can be used to force reloading of data from the server and navGrid supports reloadGridOptions option which can be used to specify the options of reloadGrid used on click on Refresh button. So the above code could be

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

By the way one can use navOptions option of jqGrid to specify default options of navGrid (see the wiki article). It allows to write the code something like

$("#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");
好听的两个字的网名 2024-10-01 04:59:49

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

<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>

I have tried the following config and it works.

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文