代码如下(省略了jqGrid的代码):
<div class="ibox-content">
<div class="tab_button_box">
<a href="#tab1" data-toggle="tab" class="btn btn-info grid_tab">在线活动</a>
<a href="#tab2" data-toggle="tab" class="btn btn-default grid_tab">历时活动</a>
<a href="#addModal" data-toggle="modal" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> 添加活动</a>
</div>
</div>
<div class="tab-content">
<div id="tab1" class="ibox-content tab-pane in active">
<div id="jqgrid1" class="jqgrid_box">
<table class="table_list" id="table_list_1"></table>
<div id="pager_list_1"></div>
</div>
</div>
<div id="tab2" class="ibox-content tab-pane">
<div id="jqgrid2" class="jqgrid_box">
<table class="table_list" id="table_list_2"></table>
<div id="pager_list_2"></div>
</div>
</div>
</div>
当通过标签页切换显示的时候,第二个jqGrid的宽度不能自适应。
经过测试发现,当jqGrid的父元素处于隐藏状态的时候,无法计算出自适应的宽度值,因此会出现第二个jqGrid无法自适应的的问题。
解决方法:当标签页切换完成的时候,重新设置jqGrid的宽度值等于其父元素的宽度值即可。
本例的解决示例代码:
$('.grid_tab').on('shown.bs.tab',function(){
$($(this).attr('href')).find('.table_list').jqGrid('setGridWidth',$($(this).attr('href')).find('.jqgrid_box').width());
});