easyui datagrid自适应浏览器宽度



在使用easyui的datagrid时,需要考虑到浏览器不同的像素问题,所以,在使用时,我们需要自己写一个函数

code:

[javascript] view plain copy
  1. functiongetWidth(percent){
  2. return$(window).width()*percent;
  3. }

这样在初始化时:

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

当然,有时候我们会考虑浏览器缩放,也要改变其中显示,这时,加上一个resize事件就可以了

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

甚至,我们需要考虑到列宽也需要改变(因情况,条件而定,这里举一例),我们需要在写一个函数:

[javascript] view plain copy
  1. functionfixWidthTable(percent){
  2. returngetWidth(0.6)*percent;
  3. }
下面是完整的代码:


[html] view plain copy
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
  5. <title>DataGridContextMenu-jQueryEasyUIDemo</title>
  6. <linkrel="stylesheet"type="text/css"href="../themes/default/easyui.css">
  7. <linkrel="stylesheet"type="text/css"href="../themes/icon.css">
  8. <linkrel="stylesheet"type="text/css"href="demo.css">
  9. <scripttype="text/javascript"src="../jquery-1.7.1.min.js"></script>
  10. <scripttype="text/javascript"src="../jquery.easyui.min.js"></script>
  11. <script>
  12. functionfixWidthTable(percent){
  13. returngetWidth(0.6)*percent;
  14. }
  15. functiongetWidth(percent){
  16. return$(window).width()*percent;
  17. }
  18. $(function(){
  19. $(window).resize(function(){
  20. //alert("change....");
  21. $("#tt").datagrid({
  22. width:getWidth(0.6)
  23. });
  24. });
  25. $('#tt').datagrid({
  26. url:'datagrid_data2.json',
  27. title:'DataGrid-ContextMenu',
  28. width:getWidth(0.6),
  29. height:'auto',
  30. fitColumns:true,
  31. columns:[[
  32. {field:'itemid',title:'ItemID',width:fixWidthTable(0.12)},
  33. {field:'productid',title:'ProductID',width:fixWidthTable(0.15)},
  34. {field:'listprice',title:'ListPrice',width:fixWidthTable(0.12),align:'right'},
  35. {field:'unitcost',title:'UnitCost',width:fixWidthTable(0.12),align:'right'},
  36. {field:'attr1',title:'Attribute',width:fixWidthTable(0.38)},
  37. {field:'status',title:'Status',width:fixWidthTable(0.11),align:'center'}
  38. ]],
  39. onHeaderContextMenu:function(e,field){
  40. e.preventDefault();
  41. if(!$('#tmenu').length){
  42. createColumnMenu();
  43. }
  44. $('#tmenu').menu('show',{
  45. left:e.pageX,
  46. top:e.pageY
  47. });
  48. }
  49. });
  50. });
  51. functioncreateColumnMenu(){
  52. vartmenu=$('<divid="tmenu"style="width:100px;"></div>').appendTo('body');
  53. varfields=$('#tt').datagrid('getColumnFields');
  54. for(vari=0;i<fields.length;i++){
  55. $('<diviconCls="icon-ok"/>').html(fields[i]).appendTo(tmenu);
  56. }
  57. tmenu.menu({
  58. onClick:function(item){
  59. if(item.iconCls=='icon-ok'){
  60. $('#tt').datagrid('hideColumn',item.text);
  61. tmenu.menu('setIcon',{
  62. target:item.target,
  63. iconCls:'icon-empty'
  64. });
  65. }else{
  66. $('#tt').datagrid('showColumn',item.text);
  67. tmenu.menu('setIcon',{
  68. target:item.target,
  69. iconCls:'icon-ok'
  70. });
  71. }
  72. }
  73. });
  74. }
  75. </script>
  76. </head>
  77. <body>
  78. <h2>DataGrid-ContextMenu</h2>
  79. <divclass="demo-info"style="margin-bottom:10px">
  80. <divclass="demo-tipicon-tip"></div>
  81. <div>Rightclicktheheaderofdatagridtoshowcontextmenu.</div>
  82. </div>
  83. <tableid="tt"></table>
  84. </body>
  85. </html>

不过在做测试中,遇到了各种奇怪的问题,今天早上一看,发现没有昨天的问题了,暴汗················

也不知道是什么原因!

如果这文有幸有高手看到,并发现了问题,或者有解决方案,贴出来也让俺瞅瞅········先谢谢啦························


上面的窗口大小改变事件中用的是重新加载,这样速度会慢很多,而API中提供了resize方法,所以改为:

[javascript] view plain copy
  1. $("#tt").datagrid("resize",{width:getWidth(0.6)});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值