【发布时间】:2011-04-15 21:35:11
【问题描述】:
我们在 loadonce 设置为 true 的网格上使用 jqGrid 导航器重新加载按钮。
reload 按钮目前不会返回服务器获取数据 - 我们如何让 reload 去服务器获取最新数据?
我相信我们可以使用beforeRefresh 回调将网格data 设置为json 而不是local,但我什至不清楚如何配置beforeRefresh 方法——我不太清楚了解文档。
【问题讨论】:
我们在 loadonce 设置为 true 的网格上使用 jqGrid 导航器重新加载按钮。
reload 按钮目前不会返回服务器获取数据 - 我们如何让 reload 去服务器获取最新数据?
我相信我们可以使用beforeRefresh 回调将网格data 设置为json 而不是local,但我什至不清楚如何配置beforeRefresh 方法——我不太清楚了解文档。
【问题讨论】:
你不是唯一有问题的人。我之前回复过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如果你点击刷新按钮,你可以看到代码是如何工作的。
更新 2:Free 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 方法。
datatype,例如onPaging(例如,请参阅the answer)。
我已经尝试了以下配置并且它有效。
<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>
【讨论】: