《ExtJS详解与实践》阅读补充资料:Grid如何高/宽自适应

Grid高度自适应是许多用户开发过程中碰到过的问题。问题在于,尽管本类是由Panel类继承而得到的,但是不支持其基类的某些功能,所以不能都做到好像一般Panel类那样的方法来解决,如autoScroll、autoWidth、layout、items等……

Grid需要指定一个宽度来显示其所有的列,也需要一个高度来滚动列出所有的行。这些尺寸都通过配置项BoxComponent.height和Ext.BoxComponen.width来精确的指定,又或者将Grid放置进入一个带有某种布局风格的容器中去,让上层容器来管理子容器的尺寸大小。

  • 指定Ext.Container配置项layout为“fit”的布局就可以很好地自适应容器的拉伸了,对于任何类型的容器都是有效的。如果GridColumn自适应宽度不能解决,还有一个来自坊间的办法:固定GridPanel的width 比如600px,按照比例配制每一个Column的宽度,比如300,200,100 ,设置autoExpandColumn,然后在GridPanel外面嵌套一个Panel layout:'fit'。
  • 如果一行有多个Grid,则使用Ext.layout.HboxLayout(对应VboxLayout),如下图和代码。

HboxLayout风格的多个比例Grid(点击图片

放大)

Hbox和Vbox是3.0崭新引入的布局类,其构思来源于CSS3的Flexible箱子模型(参考文档:www.w3.org/TR/2009/WD-css3-flexbox-20090723/

),以帮助布局者更灵活地生产横向规律或纵向规律的界面。

var p = new Ext.Panel({
title:'::业务成功率(近4个统计周期)::',
region:'center',
// 新的布局方式
layout:{
type:'hbox',
align : 'stretch',
pack : 'start'
},
defaults:{
flex:1 // 子元素平均分配宽度
},
split:true,
frame:true,
items:this.businessGridArr, // 前面定义的一个Grid数组
tbar:toolbar
});

如果几个Grid需要不同的宽度,则分布给他们设置flex配置项,box布局会把全部的flex总和后求百分比。

P.S 本文感谢Javaeye网友供图、供代码!

 

此处披露的内容是《ExtJS 3详解与实践》

的补充内容,完整的资料敬请参阅《ExtJS 3 详解与实践》

一书的全面介绍。

 

时间: 2024-10-23 09:13:05

《ExtJS详解与实践》阅读补充资料:Grid如何高/宽自适应的相关文章

《ExtJS详解与实践》阅读补充资料:单页面应用程序的设计

在一般的Web GUI 中,每个应用都分散在一个页面中,会随着页面的跳转而反映在浏览器的地址栏上:稍微复杂的基于Web 系统中,都采用划分Frame 元素或打开浏览器新窗口的方式来组织页面,从浏览器的地址看起来,虽然只有一个地址,但是子Frame 的页面还是会整张页面地刷新.AJAX 改变了以往一张页面一次请求的模式,可以允许在同一张页面发起各种的请求,这样我们对于页面的组织形式有了新的途径.在单页面GUI 模型中,主页面是可以独立加载.更新和替换的一些可视元素的组合.通过这种方式,可以不必在每

《ExtJS 3详解与实践》阅读补充资料:编写Hello World

    使用Ext编写Ajax应用程序时,初学者往往都会感到迷惑:到底应该怎样编写Ajax程序?事实上,每个初学者都会遇到这种情况--不知该如何下手,有时只是因为一点点设置不对就卡住了整个程序的运行,连HelloWorld也可能成为新手的拦路虎.为了帮助新手尽快消除这种困惑,我们这里先为新手准备一份详尽的启动文件清单,说明清楚运行该框架的最基本条件到底是哪些:然后再简单地跑一趟对话框MessageBox作为Hello World.首先是对这份HTML文件的详解:   <!-- 标识html开始

《ExtJS 3详解与实践》阅读补充资料:Ext.extend()中使用super关键字

  既然一门语言被精简了,无论idea还是直观的语法,都务求精简的话,那么这便无形就是一个趋势,趋势往往不为人们的意志转移地转为自己的习惯,思维定性的习惯,连function这个关键字也有某仁兄觉得太长了,有缩减的必要.当然这只是开玩笑而已了.   好像Lisp那样满天 点号.冒号便是灾难.用过Ext继承的人都清楚,每每调用父类成员的时候就是Ext.subClass.superclass.methodName.call/apply(this).一整串的长,好处也是明显的,起码这种完全命名方式一个

《ExtJS 3详解与实践》阅读补充资料:capture()捕获事件

静态方法Ext.util.Observable.capture()是一项有趣的功能,它能够将一项事件进行捕获,跟踪该事件发生的经过.捕获事件就是观察Ext JS事件的调用过程.只要是继承了 Ext.util.Observable的组件,调用capture(),便可得知该组件何时何地怎样响应事件,也算是调试组件时的技巧. // 假设已有一个名为'myWindow'的UI组件,用Ext.getCmp()返回该对象. Ext.util.Observable.capture(Ext.getCmp('my

《ExtJS 3详解与实践》阅读补充资料:用BoxComponent制作Logger UI

如果要求的UI控件不需要其他的细节的控件,也就是,仅仅是封装某部分的HTML元素的话,还要听凭布局管理器提供的大小尺寸.布局的调控,那么这个的扩展对象就是Ext.BoxComponent.例如,假设一个Logger类打算是简单地显示log信息,就可以这样定义: Ext.ns('Ext.ux.Logger'); Ext.ux.Logger = Ext.extend(Ext.BoxComponent, { tpl: new Ext.Template("<li class='x-log-entr

javascript凌厉开发:extjs3详解与实践的光盘代码

问题描述 javascript凌厉开发:extjs3详解与实践的光盘代码 光盘不见了,网上压根就没这资源, 书中的代码都是片断 求助... 解决方案 重买一本或者联系作者发源代码,你的图书上应该有联系方式

《Ext详解与实践》简介

内 容 简 介 富客户端程序RIA 使Web表示层的技术向前迈进了一大步,开创了图形化编程的新一代先河.在它的带动下,许多优秀的RIA开发方案相继问世.这些开发方案各有个秋,但它们都或多或少地从传统桌面程序开发中汲取了营养.随着前端技术的不断进步,以及JavaScript 引擎的速度改善,基于Ajax 方案的Ext JS也在不断进步.Ext JS及与之相关的GXT.Ext SHARP等开发工具的推出,使快速开发.基于可视化快速开发工具又向前迈进一大步. 本书以学习Ext JS的开发人员为基本读者

详解金地内讧:弱股东强高管董事会形同虚设

一封直接导致高管层决裂的检举信,引爆了上市公司金地集团(600383.SH,下称金地)累积多年的夺权战.血战的最终结果,是董事长凌克守住金地"大当家"位置,他过去的老友.近年的对手,金地总裁张华纲.上海分公司总经理赵汉忠则黯然离去(参见本刊2010年第28期"金地内讧"). 此三人,年龄相仿,地位接近,创业时以"三驾马车"之势推动金地成长,但公司壮大后却未能善始善终,其中暴露的中国企业文化缺失和公司治理缺陷堪为中国公司镜鉴. 在这场漫长的夺权之战

Linux下套接字详解(七)----线程池accept处理高并发connect

前言 服务器在调用listen和accept后,就会阻塞在accept函数上,accpet函数返回后循环调用accept函数等待客户的TCP连接. 我们知道服务器段listen套接字能处理的连接数与监听队列的大小有关,如果这时候又大量的用户并发发起connec连接,那么在listen有队列上限(最大可接受TCP的连接数)的情况下,有多少个connect会成功了. 试验证明,当连接数远远高于listen的可连接数上限时,客户端的大部分TCP请求会被抛弃,只有当listen监听队列空闲或者放弃某个连