`
myyugioh
  • 浏览: 20678 次
社区版块
存档分类
最新评论

【Ext3.1.1】关于GridPanel宽度自适应的几个方案

    博客分类:
  • EXT
阅读更多

测试环境: Extjs3.1.1 + IE8

测试代码:

/*store之类的就省略了*/

var sm = new Ext.grid.CheckboxSelectionModel({
	handleMouseDown : function(){}
});

var gridColumn = new Ext.grid.ColumnModel([
	sm,
	{header:'地市',dataIndex:'areaName',width:200},
	{header:'品牌',dataIndex:'brandName',width:200},
	{header:'指标',dataIndex:'busiTypeName',width:200},
	{header:'1日',dataIndex:'day1',width:200},
	{header:'2日',dataIndex:'day2',width:200},
	{header:'3日',dataIndex:'day3',width:200},
	{header:'4日',dataIndex:'day4',width:200},
	{header:'5日',dataIndex:'day5',width:200}
]);

var gridPanel = new Ext.grid.GridPanel({
	id: 'gridPanelId',
	cm: gridColumn,
	sm: sm,
	ds: gridStore,
	frame: true,
	autoScroll: true,
	height: 550,
	tbar: topToolbar,
	bbar: new Ext.PagingToolbar({
		id: 'pagingToolbarId',
		store: gridStore,
		displayInfo: true, 
		pageSize: 10
	})
});

var linePanel = new Ext.Panel({
	id: 'linePanelId',
	frame: true,
	contentEl: 'myChartId',
	height: 550
});

var backPanel = new Ext.Panel({
	id: 'backPanelId',
	frame: true,
	autoScroll: true,
	items: [gridPanel, linePanel]
});

new Ext.Viewport({
	layout: 'fit',
	items: backPanel
});

 

原始效果图:

 

1.修改样式表: http://www.iteye.com/topic/244973

结果:没任何效果

 

2.修改布局为'anchor':http://www.iteye.com/topic/244973?page=2#977202

注意:不要设置viewConfig: {forceFit: true},这个是把列宽(即ColumnModel的宽度)设置为自动宽度,不是整个GridPanel的宽度。

结果:超出屏幕的部分会被截掉,页面没有水平滚动条,导致无法看到被截掉的部分。不过在FF里可以得到正确的效果,但仅限于初始化页面时。问题在于如果你的打开当前页面时浏览器窗口不是最大化状态,就会看到一个有趣的效果,GridPanel内表格的宽度为页面初始宽度,当你把页面最大化时,GridPanel宽度却不会跟着改变,直到页面刷新。

 

3.动态给GridPanel的宽度赋值:http://www.iteye.com/topic/244973#692945

结果:这是目前我所尝试的所有方法中最为可行的(仅针对IE而言,要不方法4才是最好的解决方案),而且也不需要把GridPanel  render到DIV中。唯一需要注意的,DIV的宽度把垂直滚动条的宽度也包含在内,如果你的页面有垂直滚动条,就必须减去滚动条的宽度。

 

4.修改布局为'fit':http://www.iteye.com/topic/153023#441966

结果:当布局容器里只存在一个GridPanel时,GridPanel的自适应问题可以完美解决,可惜多数时时候布局里不可能只存在一个GirdPanel……当然,可以采用布局嵌套的方式,让一个布局里只包含一个GridPanel,具体范例可以参数官方范例examples\forum\forum.html 或者这位朋友引用的例子http://www.iteye.com/topic/153023?page=3#628417

补充:官方与那位朋友的例子都是用border嵌套fit,这样做有一个不好的地方就是,整个页面的最高和最宽都被限定在一个屏幕范围内。如果用panel嵌套fit,就可以使整个页面的高度超过屏幕,不过这样做的话,IE8无法全自适应(FF中没问题)。当页面从大变小时,GridPanel的宽度不会改变,反过来却可以自适应页面。另外需要注意的是,使用panel嵌套fit时,GridPanel要添加配置项 bodyStyle: 'width:100%' ,否则依然会超屏。

 

5.添加配置项 bodyStyle: 'width: 100%':http://www.iteye.com/topic/153023?page=2#445479

或者指定width的值为 Ext.get("divname").getWidth():http://www.iteye.com/topic/153023#441865

结果:上面两个方法效果一样,页面初始化时看起来还不错,如果你的页面没有垂直滚动条的话。但是依然不能自适应,原因就是这个 http://www.iteye.com/topic/153023?page=2#442557

需要特别说明的是,该方法在ext2.2中有完美的效果,不知为啥3.X版本就不行了。

 

 

 

另外有个不是问题的问题:如果页面有其它固定宽度的元素而GridPanel的宽度自适应,当浏览器窗口缩小到比那些元素的宽度更小时就会出现水平滚动条,把水平滚动条拖到最右就可以看到GirdPanel的右边有大量的空白页面。解决方法就是不要把那些大的并且有固定宽度的元素跟需要宽度自适应的GridPanel放在一个页面,或者动态调整这些元素的位置使水平滚动条不要出现。

  • 大小: 57.3 KB
分享到:
评论

相关推荐

    ext 3.1.1 API and spket

    ext 3.1.1 API and spket1.6.11 .EN ext 3.1.1 API and spket1.6.11 .EN

    ext3.1.1.rar

    ext3.1.1.rar,源码,附有example示例

    ext-3.1.1源码

    ext-3.1.1源码 ext-3.1.1源码ext-3.1.1源码

    ExtJs API 3.1.1 3.3.1 2.X

    ExtJs_API 3.1.1 是 英文版 API 3.3.1 是 Air 的 英文版 API 2.X 是 Air 的 中文 版 API

    Extjs-ext-3.1.1

    Ext JS - JavaScript Library Copyright (c) 2006-2009, Ext JS, LLC All rights reserved. licensing@extjs.com http://extjs.com/license Open Source License Ext is licensed under the terms of the Open ...

    ExtJS 3.1.1 API (非官方AIR版本)

    ExtJs 3.1.1 API (AIR版本), 非官方制作,不过和官方的基本一样。

    ext-3.1.1源代码

    ext是一个强大的js类库,它提供了丰富的,非常漂亮的外观体验,成为众多界面层开发人员的追捧!其核心的组件基本覆盖了我们构建富客户端的常用的组件。

    Ext JS 3.1.1 Ultimate 版

    用了三年Ext JS ,这是最近两个项目用到的EXT js版本;需要更多ExtJS的扩展,请跟我联系。

    Ext JS v3.1.1.zip

    Ext JS是一个创建丰富互联网应用程序的跨浏览器的JavaScrip库。它包含:高效率,可定制用户界面的小部件,设计漂亮的、可扩展的组成部件模型,容易使用的、直观的应用程序接口。

    ExtJs3.1目前所有例子源代码

    ExtJs3.1目前所有例子源代码 包括网络的以及自己整理的,可以快速的学习extjs 4.x之后发生变化,后期在搜集

    OpenSceneGraph-3.1.1 库

    OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-3.1.1 库OpenSceneGraph-...

    hadoop最新版本3.1.1全量jar包

    hadoop-annotations-3.1.1.jar hadoop-common-3.1.1.jar hadoop-mapreduce-client-core-3.1.1.jar hadoop-yarn-api-3.1.1.jar hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar ...

    MQTT 协议 3.1.1 中文版

    MQTT 协议 3.1.1 中文版

    hadoop-3.1.1编译

    hadoop-3.1.1

    MQTT-3.1.1-中文

    MQTT 协议 3.1.1 中文版 OASIS 标准 MQTT-3.1.1-CN MQTT 是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择...

    maven_3.1.1 版本

    mvn 3.1.1 版本 !

    spring3.1.1常用jar包

    spring3.1.1常用jar包,放在这里

    maven之spring3.1.1+mybatis3.1.1整合

    以前用习惯了Hibernate, 开始接触Mybatis,同样是ORM, MyBatis确实很轻巧,正好也可以自己练练SQL,整合了maven版的spring3.1.1 + mybatis3.1.1,希望对你有帮助。

    jquery-3.1.1.min.js

    jquery-3.1.1.min.js

    spring-3.1.1源码和架包

    spring-framework-3.1.1.RELEASE.zip spring-framework-3.1.1.RELEASE-with-docs.zip

Global site tag (gtag.js) - Google Analytics