easyui datagrid自適應瀏覽器寬度



在使用easyui的datagrid時,需要考慮到瀏覽器不同的像素問題,所以,在使用時,我們需要自己寫一個函數

code:

[javascript] view plaincopy
  1. function getWidth(percent){  
  2.     return $(window).width() * percent;  
  3. }  

這樣在初始化時:

[javascript] view plaincopy
  1. $("#tt").datagrid({  
  2.     width: getWidth(0.6)  
  3. });       

當然,有時候我們會考慮瀏覽器縮放,也要改變其中顯示,這時,加上一個resize事件就可以了

[javascript] view plaincopy
  1. $(window).resize(function(){  
  2. //alert("change....");  
  3. $("#tt").datagrid({  
  4.     width: getWidth(0.6)  
  5. });                
  6. );  

甚至,我們需要考慮到列寬也需要改變(因情況,條件而定,這裏舉一例),我們需要在寫一個函數:

[javascript] view plaincopy
  1. function fixWidthTable(percent){  
  2.         return getWidth(0.6) * percent;  
  3. }  
下面是完整的代碼:


[html] view plaincopy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5.     <title>DataGrid ContextMenu - jQuery EasyUI Demo</title>  
  6.     <link rel="stylesheet" type="text/css" href="../themes/default/easyui.css">  
  7.     <link rel="stylesheet" type="text/css" href="../themes/icon.css">  
  8.     <link rel="stylesheet" type="text/css" href="demo.css">  
  9.     <script type="text/javascript" src="../jquery-1.7.1.min.js"></script>  
  10.     <script type="text/javascript" src="../jquery.easyui.min.js"></script>  
  11.     <script>  
  12.   
  13.         function fixWidthTable(percent){  
  14.                 return getWidth(0.6) * percent;  
  15.         }  
  16.           
  17.         function getWidth(percent){  
  18.             return $(window).width() * percent;  
  19.         }  
  20.   
  21.         $(function(){  
  22.              $(window).resize(function(){  
  23.                 //alert("change....");  
  24.                 $("#tt").datagrid({  
  25.                     width: getWidth(0.6)  
  26.                 });                
  27.             });  
  28.   
  29.             $('#tt').datagrid({  
  30.                 url: 'datagrid_data2.json',  
  31.                 title: 'DataGrid - ContextMenu',  
  32.                 width: getWidth(0.6),  
  33.                 height: 'auto',  
  34.                 fitColumns: true,  
  35.                 columns:[[  
  36.                 {field:'itemid',title:'Item ID',width:fixWidthTable(0.12)},  
  37.                 {field:'productid',title:'Product ID',width:fixWidthTable(0.15)},  
  38.                 {field:'listprice',title:'List Price',width:fixWidthTable(0.12),align:'right'},  
  39.                 {field:'unitcost',title:'Unit Cost',width:fixWidthTable(0.12),align:'right'},  
  40.                 {field:'attr1',title:'Attribute',width:fixWidthTable(0.38)},  
  41.                 {field:'status',title:'Status',width:fixWidthTable(0.11),align:'center'}  
  42.                  ]],  
  43.                 onHeaderContextMenu: function(e, field){  
  44.                     e.preventDefault();  
  45.                     if (!$('#tmenu').length){  
  46.                         createColumnMenu();  
  47.                     }  
  48.                     $('#tmenu').menu('show', {  
  49.                         left:e.pageX,  
  50.                         top:e.pageY  
  51.                     });  
  52.                 }  
  53.             });  
  54.         });  
  55.           
  56.         function createColumnMenu(){  
  57.             var tmenu = $('<div id="tmenu" style="width:100px;"></div>').appendTo('body');  
  58.             var fields = $('#tt').datagrid('getColumnFields');  
  59.             for(var i=0; i<fields.length; i++){  
  60.                 $('<div iconCls="icon-ok"/>').html(fields[i]).appendTo(tmenu);  
  61.             }  
  62.             tmenu.menu({  
  63.                 onClick: function(item){  
  64.                     if (item.iconCls=='icon-ok'){  
  65.                         $('#tt').datagrid('hideColumn', item.text);  
  66.                         tmenu.menu('setIcon', {  
  67.                             target: item.target,  
  68.                             iconCls: 'icon-empty'  
  69.                         });  
  70.                     } else {  
  71.                         $('#tt').datagrid('showColumn', item.text);  
  72.                         tmenu.menu('setIcon', {  
  73.                             target: item.target,  
  74.                             iconCls: 'icon-ok'  
  75.                         });  
  76.                     }  
  77.                 }  
  78.             });  
  79.         }  
  80.     </script>  
  81. </head>  
  82. <body>  
  83.     <h2>DataGrid - ContextMenu</h2>  
  84.     <div class="demo-info" style="margin-bottom:10px">  
  85.         <div class="demo-tip icon-tip"></div>  
  86.         <div>Right click the header of datagrid to show context menu.</div>  
  87.     </div>  
  88.       
  89.     <table id="tt"></table>  
  90.       
  91. </body>  
  92. </html>  

不過在做測試中,遇到了各種奇怪的問題,今天早上一看,發現沒有昨天的問題了,暴汗················

也不知道是什麼原因!

如果這文有幸有高手看到,並發現了問題,或者有解決方案,貼出來也讓俺瞅瞅········先謝謝啦························


上面的窗口大小改變事件中用的是重新加載,這樣速度會慢很多,而API中提供了resize方法,所以改爲:

[javascript] view plaincopy
  1. $("#tt").datagrid("resize",{width:getWidth(0.6)});  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章