关于Extjs gridpanel设置autoHeight:true时,横向滚动条的问题

使用gridpanel时我们有时需要给设置autoHeight:true,但这时如果表格的宽度大于它的容器的宽度,多余的内容就会被隐藏而不会出现横向的滚动条,费了老大劲儿才找到了解决办法,方法就是给gridpanel的option config添加如下属性:

viewConfig : {   
    layout : function() {   
        if (!this.mainBody) {   
            return; // not rendered   
        }   
        var g = this.grid;   
        var c = g.getGridEl();   
        var csize = c.getSize(true);   
        var vw = csize.width;   
        if (!g.hideHeaders && (vw < 20 || csize.height < 20)) { // display:   
            // none?   
            return;   
        }   
        if (g.autoHeight) {   
            this.el.dom.style.width = "100%";   
            this.el.dom.style.overflow = "auto";   
            this.el.dom.firstChild.style.overflow = "visible";   
            this.el.dom.firstChild.style.cssFloat = "left";   
            this.el.dom.firstChild.firstChild.style.cssFloat = "left";   
            this.el.dom.firstChild.firstChild.nextSibling.style.cssFloat = "left";   
            this.el.dom.firstChild.firstChild.firstChild.style.overflow = "visible";   
            this.el.dom.firstChild.firstChild.nextSibling.style.overflow = "visible";   
        } else {   
            this.el.setSize(csize.width, csize.height);   
            var hdHeight = this.mainHd.getHeight();   
            var vh = csize.height - (hdHeight);   
            this.scroller.setSize(vw, vh);   
            if (this.innerHd) {   
                this.innerHd.style.width = (vw) + 'px';   
            }   
        }   
        if (this.forceFit) {   
            if (this.lastViewWidth != vw) {   
                this.fitColumns(false, false);   
                this.lastViewWidth = vw;   
            }   
        } else {   
            this.autoExpand();   
            this.syncHeaderScroll();   
        }   
        this.onLayout(vw, vh);   
    }   
}  


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luwenhe/archive/2010/01/19/5213768.aspx

 

解决过程中遇到了好多问题,如header的背景不全,不是所有的列都能resize(已经设置了resizable:true),所以可能还有很多问题我没有发现。如果谁发现有什么问题,希望不吝赐教。

修改:

又发现了一个简单的方法比上边效果好多了,嘿嘿

viewConfig : {   
    layout : function() {   
        if (!this.mainBody) {   
            return; // not rendered   
        }   
        var g = this.grid;   
        var c = g.getGridEl();   
        var csize = c.getSize(true);   
        var vw = csize.width;   
        if (!g.hideHeaders && (vw < 20 || csize.height < 20)) { // display:   
            // none?   
            return;   
        }   
        if (g.autoHeight) {   
            if (this.innerHd) {   
                this.innerHd.style.width = (vw) + 'px';   
            }   
        } else {   
            this.el.setSize(csize.width, csize.height);   
            var hdHeight = this.mainHd.getHeight();   
            var vh = csize.height - (hdHeight);   
            this.scroller.setSize(vw, vh);   
            if (this.innerHd) {   
                this.innerHd.style.width = (vw) + 'px';   
            }   
        }   
        if (this.forceFit) {   
            if (this.lastViewWidth != vw) {   
                this.fitColumns(false, false);   
                this.lastViewWidth = vw;   
            }   
        } else {   
            this.autoExpand();   
            this.syncHeaderScroll();   
        }   
        this.onLayout(vw, vh);   
    }   
}  


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luwenhe/archive/2010/01/19/5213768.aspx

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值