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

【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 和 Spket 是两个在JavaScript开发领域中常用的重要工具,尤其在构建富互联网应用程序(Rich Internet Applications, RIA)时。本文将深入探讨这两个组件的功能、用途及其结合使用的方式。 首先,Ext ...

    ext3.1.1.rar

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

    ext-3.1.1源码

    EXTJS 3.1.1 是一个古老的但仍然流行的JavaScript库,主要用于构建富客户端Web应用程序。这个库由Sencha公司开发,提供了丰富的组件、布局管理、数据绑定和强大的API,使得开发者可以创建交互性强、用户体验良好的...

    ExtJs API 3.1.1 3.3.1 2.X

    ExtJs 是一个强大的JavaScript库,专门用于构建富客户端应用程序,特别是那些基于Web的桌面级应用。这个库提供了丰富的组件库、数据绑定、可扩展性以及高级的用户界面控件,使得开发者可以创建出功能强大、交互性强...

    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 ...

    Ext JS 3.1.1 Ultimate 版

    Ext JS 是一个强大的JavaScript库...总的来说,Ext JS 3.1.1 Ultimate版是一个全面的前端开发框架,适合构建大型企业级应用。如果你的项目需要这个版本,确保评估其是否满足当前的技术需求,同时考虑未来升级的可能性。

    Ext JS v3.1.1.zip

    例如,`ext-3.1.1`目录下可能包含了`GridPanel`、`FormPanel`、`TabPanel`等预定义的组件,它们分别对应表格视图、表单和选项卡布局。 其次,Ext JS提供了优雅的API,使得开发者能够方便地与用户进行交互。例如,...

    ExtJS 3.1.1 API (非官方AIR版本)

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

    ext-3.1.1源代码

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

    ext学习资料和rar

    通过阅读提供的EXT-3.1.1文档,你可以深入了解每个组件的API,学习如何配置、使用和扩展组件,从而提升你的前端开发能力。在实践中不断探索,结合示例代码加深理解,将有助于你更好地掌握EXT框架。

    spring-3.1.1源码和架包

    在Spring 3.1.1版本中,有以下几个关键特性: 1. **Java配置**:Spring 3.1引入了Java配置,允许开发者使用@Configuration和@Bean注解来定义bean及其依赖关系,减少了XML配置的需求。 2. **自动扫描**:增强了组件...

    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 ...

    maven_3.1.1 版本

    Maven 3.1.1是该系列的一个重要版本,它在Maven 3.x 系列中提供了诸多改进和新特性,旨在提升开发人员的工作效率和项目的可维护性。 **1. ** **依赖管理和构建生命周期** Maven 的核心功能之一是依赖管理。通过在`...

    spring3.1.1jar及其关联jar

    org.springframework.aop-3.1.1.RELEASE org.springframework.asm-3.1.1.RELEASE org.springframework.aspects-3.1.1.RELEASE org.springframework.beans-3.1.1.RELEASE org.springframework.context.support-3.1.1....

    metronic 3.1.1

    《Metronic 3.1.1:一个强大的前端框架与模板集合》 Metronic 3.1.1 是一款备受推崇的前端开发框架,专为构建现代、响应式且高性能的网页应用而设计。该版本集成了Bootstrap 3.2.0,这是一个广泛使用的开源前端框架...

    jquery-3.1.1.js和jquery-3.1.1.min.js

    本篇文章将深入探讨jQuery 3.1.1版本的两个核心文件——`jquery-3.1.1.js`和`jquery-3.1.1.min.js`,以及它们在Bootstrap Treeview插件中的应用。 首先,我们来看`jquery-3.1.1.js`,这是未经压缩和未优化的源代码...

    wxsqlite3-3.1.1.zip

    综上所述,wxsqlite3-3.1.1是保护SQLite数据库安全的有效工具,它将加密技术与SQLite的强大功能相结合,为开发者提供了一种简单且强大的解决方案,以应对日益严峻的数据安全挑战。在开发过程中,熟练掌握并运用...

Global site tag (gtag.js) - Google Analytics