我正在使用 jqgrid 4.0(通过 jquery struts 2 插件)和 jQuery 布局插件。以前的答案对我不起作用。不过,只有函数 resizeGrid 是个问题。只需用这个替换上面的resizeGrid 函数。这只会调整一个网格的大小 - id 为 gridtable 的网格。
function resizeGrid(pane, $Pane, paneState) {
jQuery("#gridtable").jqGrid('setGridWidth',paneState.innerWidth - 2, 'true');
};
#gridtable 是您为 jqgrid 创建的表格元素的 id
<div id="grid_container">
<table id="gridtable" class="mygrid"></table>
<div id="grid_pgr"></div>
</div>
此外,如果您使用 jquery struts2 插件,则网格是使用 < body > 内的 < script > 块自动生成的(不在 < head > 内的脚本块中)。因此,如果您调用layout() 并在< head > 中设置triggerEventsOnLoad: true,您会收到一个javascript 错误。为避免这种情况,您可以在声明网格后的某处添加此脚本块。
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery("#gridtable").jqGrid('setGridWidth',$myLayout.state.center.innerWidth - 2, 'true');
});
</script>
如果您有多个网格,您可以使用您在表格元素上定义的类来访问它们(参见上面的 html sn-p),然后在每个网格上运行 resizeGrid 方法。