`
qimo601
  • 浏览: 3450900 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

关于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

 

 

分享到:
评论

相关推荐

    Extjs gridpanel 出现横向滚动条问题的解决方法

    在使用ExtJS开发Web应用程序时,经常会遇到在GridPanel中数据列过多,导致横向滚动条自动出现的问题。这个问题主要是由于GridPanel的宽度不足以容纳所有的列宽,因此浏览器会自动显示横向滚动条以便用户查看全部数据...

    ExtJs GridPanel双击事件获得双击的行

    以上就是关于ExtJs GridPanel双击事件获取双击的行及选中复选框状态的实现方法。通过这些知识,你可以轻松地在GridPanel中添加用户交互功能,提升应用程序的用户体验。请确保在实际项目中根据需求调整代码,以满足...

    ExtJs GridPanel延时加载.rar

    在ExtJs中,延时加载通常通过设置Store的`buffered`属性为`true`来实现,这会启用BufferedStore功能。还需要配置`pageSize`以决定每次加载的数据量。此外,可能需要定义`leadingBufferZone`和`trailingBufferZone`...

    给Extjs的GridPanel增加“合计”行

    在EXTJS中,GridPanel是一种常用的组件,用于展示表格数据。在实际应用中,我们经常需要在GridPanel底部显示一行“合计”行,以便对某一列或多列的数据进行求和或其他统计操作。这篇博文“给Extjs的GridPanel增加...

    EXTJS_GridPanel_ColumnModel_列的宽度随数据变化而变化

    因此,合理地设置`flex`和`autoWidth`,以及在必要时手动触发视图刷新,是优化EXTJS GridPanel列宽动态调整的关键。 在博客中提到的"JavaEyeGrid"可能是一个自定义的EXTJS GridPanel实现,或者是作者提供的示例代码...

    extjs gridpanel例子和简单应用

    通过以上分析可以看出,在ExtJS中利用`GridPanel`展示数据时,需要通过多个对象进行配合来完成数据的加载、解析、展示等功能。这些对象包括`HttpProxy`、`JsonReader`、`Store`、`ColumnModel`和`PagingToolbar`等。...

    Extjs2.02 Gridpanel

    【EXTJS 2.02 GridPanel 知识详解】 EXTJS GridPanel 是EXTJS库中的核心组件之一,尤其在EXTJS 2.02版本中,它提供了强大的表格展示和交互功能,对于初学者来说极具学习价值。GridPanel不仅能够处理基本的表格操作...

    extjs中验证实例

    autoHeight:true, defaultType:"textfield", items:[ {fieldLabel:"姓名", //width:250, //设置了anchor后无效 allowBlank:false, blankText:"姓名不能为空", anchor:"50%" }, { fieldLabel:"密码", ...

    ExtJS的GridPanel导出excel文件

    ExtJS的GridPanel导出excel文件,方便快捷易懂!

    Ext grid panel 滚动条位置不变

    - `scrollTop`:将滚动条设置为顶部。 - `scrollToTop`:避免执行默认的滚动行为。 3. **注意点**: - 需要确保网格视图的`scroller`属性已经被正确初始化。 - 当使用`Ext.override`时,确保不会与其他覆盖方法...

    Extjs让Gridpanel组件自动滚屏

    后来公司让改变一个Gridpanel的展现方式,要求实现滚屏的效果。于是我就开始找API相关的功能了。找了很久,也没有找到框架的相应控制方法,然后在网上找了很久,也没有找到有人给去示例,无奈就只能自己写JS来控制...

    ExtJs2.2的grid滚动条以及点Grid发生偏移问题

    Bug1:出现纵向滚动条后,将横向滚动条拖到最后,然后会发现每选择一条记录整个grid就会往左移,右边空出一部份空白。 Bug2:出现横向滚动条后,向右稍拉滚动条,然后点击任意一行,会发现行内容向左偏移,滚动条...

    ExtJS 表格面板GridPanel完整例子

    ExtJS表格面板(GridPanel)是Sencha Ext JS框架中的一个核心组件,它用于展示大量结构化数据。在本文中,我们将深入探讨如何创建并使用一个完整的ExtJS GridPanel实例,以及与其相关的源码和工具。 首先,让我们...

    通过Servlet让Extjs GridPanel 显示数据库数据.docx

    ### 通过Servlet让Extjs GridPanel显示数据库数据 在现代Web开发中,将数据库中的数据动态展示在前端界面上是一项常见的需求。本文档主要介绍如何通过Servlet技术配合Extjs框架中的GridPanel组件来实现这一功能。 ...

    ExtJs GridPanel 操作

    ExtJS GridPanel是Sencha ExtJS框架中的一个核心组件,用于创建数据网格,展示大量结构化数据。在本文中,我们将深入探讨GridPanel的操作,包括其功能、配置选项以及如何扩展GridPanel以满足复杂需求。 首先,...

    Extjs入门教程(treePanel和GridPanel)

    在集成TreePanel和GridPanel时,可能涉及到的概念有:将TreePanel的节点与GridPanel的数据关联,实现点击树节点时动态加载或更新GridPanel的数据,以及可能的父子数据联动操作。 在实际应用中,你可能会学习到以下...

    Extjs4.0 列隐藏和滚动条动态加载

    要实现滚动条动态加载,需要设置`viewConfig`中的`scroll`属性为`true`,并使用`store`的`buffered`和`pageSize`属性来指定数据加载策略。 3. **ExtJS 4.0的Grid Panel** Grid Panel是ExtJS中用于展示数据的主要...

    Extjs4 GridPanel 的几种样式使用介绍

    关于选择模式,ExtJS4的GridPanel支持多种选择模式,如: 1. **SINGLE**: 单选模式,每次只能选择一行。 2. **MULTI**: 多选模式,可以同时选择多行。 3. **SIMPLE**: 简单多选模式,需要按住Shift键才能连续选择...

    ExtJS-3.4.0系列:Ext.TabPanel

    在本文中,我们将深入探讨ExtJS中的`Ext.TabPanel`组件,它是创建多标签界面的核心元素。`Ext.TabPanel`允许开发者在单个容器中组织多个面板或视图,每个面板都有自己的标题,并且可以通过标签页进行切换。让我们...

Global site tag (gtag.js) - Google Analytics