1. 程式人生 > >easyui中datagrid自適應瀏覽器大小

easyui中datagrid自適應瀏覽器大小

因為datagrid的fitColumns只有在初次載入資料的時候生效,所以在載入完資料後再改變瀏覽器大小,datagrid是不會改變大小的,只能保持在載入資料的時候的瀏覽器大小

解決方法就是動態設定fitColumns:true

這個有個弊端就是 只要改變瀏覽器大小就要重新載入,即走一遍後臺,比較消耗效能,所以在建立datagrid的時候儘量不要動態,寫死,只動態生成資料就好,當然也不用擔心,一般也沒使用者頻繁縮放/放大

我的層級是 div-div-iframe-div-datagrid

步驟:

1. 設定公共方法,設定datagrid的屬性  fitColumns:true  在瀏覽器大小改變時也一直存在

//瀏覽器視窗大小變化後,表格寬度自適應

    $(window).resize(function(){

        fitCoulms();

    });

//設定datagrid的大小始終自適應

functionfitCoulms(){

    $('#grid'+id).datagrid({

        fitColumns:true

    })

   }

2. 改變datagrid中的列的寬度為百分比來實現列的寬度也自適應的效果

(如果只有第一步,裡面的列的寬度不會自適應,只有總大小自適應)

公共方法:

//取瀏覽器可見寬度的百分比,percent為0.1,0.2,0.3對應總寬度的10%,20%,30%

functionfixWidth(percent) {  

        returndocument.body.clientWidth * percent ;//document.body.clientWidth:瀏覽器可見寬度,這裡可以自己做調整  

    }  

然後再設定列的時候呼叫就可以

varcolumns=[[

        {

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

        }

]];

 如有問題可在下方評論。