解决方法就是动态设置fitColumns:true
这个有个弊端就是 只要改变浏览器大小就要重新加载,即走一遍后台,比较消耗性能,所以在创建datagrid的时候尽量不要动态,写死,只动态生成数据就好,当然也不用担心,一般也没用户频繁缩放/放大
我的层级是 div-div-iframe-div-datagrid
步骤:
1. 设置公共方法,设置datagrid的属性 fitColumns:true 在浏览器大小改变时也一直存在
//浏览器窗口大小变化后,表格宽度自适应
$(window).resize(function(){
fitCoulms();
});
//设置datagrid的大小始终自适应
function fitCoulms(){
$('#grid'+id).datagrid({
fitColumns:true
})
}
2. 改变datagrid中的列的宽度为百分比来实现列的宽度也自适应的效果
(如果只有第一步,里面的列的宽度不会自适应,只有总大小自适应)
公告方法:
//取浏览器可见宽度的百分比,percent为0.1,0.2,0.3对应总宽度的10%,20%,30%
function fixWidth(percent) {
returndocument.body.clientWidth * percent ;//document.body.clientWidth:浏览器可见宽度,这里可以自己做调整
}
然后再设置列的时候调用就可以
var columns=[[
{
field:'id1',
title :'编号',
checkbox :true
},{
field:'id',
title:'id',
hidden:true,
},{
field:'tradeName',
title:'经营单位名称',
align :'center',
width:fixWidth(0.1),
},{
field:'ownerName',
title:'加工单位名称',
align :'center',
width:fixWidth(0.1),
},{
field:'declareDate',
title:'申报日期',
align :'center',
width:fixWidth(0.05),
},{
field:'updateTime',
title:'更新时间',
align :'center',
width:fixWidth(0.05),
},{
field:'status',
title:'状态',
align :'center',
width:fixWidth(0.02),
}
]];
如有问题可在下方评论。