首页 > 代码库 > 解决Ext 4.0.7 tree.Panel横向不出滚动条,纵向滚动条失效的问题

解决Ext 4.0.7 tree.Panel横向不出滚动条,纵向滚动条失效的问题

/**
 * 重写Ext.tree.Panel afterlayout方法,解决横向不出滚动条,纵向滚动条失效的问题
 * 1.显示grid的css滚动条,横向滚动条没有办法使标题一块儿滚动,所以隐藏掉
 * 2.将grid的css纵向滚动条定位到最右侧
 * 3.获取到ext自动添加的自己写的滚动条,将它remove掉
 */
Ext.tree.Panel.override({
    listeners:{
        afterlayout : function(treePanel, eOpts){
            var emBody = document.getElementById(treePanel.body.id);
            var emView = document.getElementById(treePanel.getView().id);
            var emTable = document.getElementById(treePanel.getView().id).childNodes[0];
            if(emTable != undefined){
                var emTableW = emTable.style.width;
                var newEmTableW = parseInt(emTable.style.width.substr(0,emTableW.length-2))-20;
                emTable.style.width = newEmTableW+"px";
                emTable.style.tableLayout = ‘auto‘;
                emTable.style.borderCollapse = ‘separate‘;
            }
            emView.style.overflow = ‘visible‘;
            emView.style.overflowX = ‘auto‘;
            emView.style.overflowY = ‘auto‘;
            emView.style.position = ‘relative‘;
            var emDivArr = document.getElementsByTagName("div");
               for(var i = 0; i < emDivArr.length; i++){
                   var emDiv = emDivArr[i];
                   if(emDiv.id.indexOf("gridscroller") == 0 && emDiv.className.indexOf("x-scroller-vertical") > 0){
                       if(emDiv.parentNode != null){
                           emDiv.parentNode.removeChild(emDiv);
                       }
                       emView.style.width = treePanel.getWidth()+"px";
                       emBody.style.width = treePanel.getWidth()+"px";
                   }
               }
         }
    }
});
  1. 在jsp中或在通用的js文件中加入下面的重写Ext.tree.Panel afterlayout的方法;
  2. 仅在ext4.0.7中简单测试过,其他版本请自行测试。
  3. 若在使用过程中发现会引起其他bug,请在原文出处回复讨论,谢谢。
作者:java小秦
出处:http://www.cnblogs.com/qinjunli
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

解决Ext 4.0.7 tree.Panel横向不出滚动条,纵向滚动条失效的问题