zoukankan      html  css  js  c++  java
  • 关于Extjs_gridpanel设置autoHeighttrue时横向滚动条的问题

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

    Js代码
    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);
    }
    }

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

    Js代码
    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);
    }
    }

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

  • 相关阅读:
    Python3字典中items()和python2.x中iteritems()有什么区别
    python中使用zip函数出现<zip object at 0x02A9E418>
    python中字符串连接的四种方式
    Python如何规定对方输入的数字必须是整数?
    C# 自定义控件VS用户控件
    c#使用Split分割换行符
    C# 读取app.config配置文件 节点键值,提示 "配置系统未能初始化" 错误的解决方案
    安装MySql for Visual Studio的坑
    MySql Access denied for user 'root'@'localhost' (using password:YES) 解决方案
    VS2010 VS2012 VS2013 VS2015启动调试时老是提示正在下载公共符号
  • 原文地址:https://www.cnblogs.com/exmyth/p/3077316.html
Copyright © 2011-2022 走看看