ExtJS 4 Grid组件

  




  
  
  
  
  
  我们正在努力为ExtJS4做准备,到目前为止,我们已经发布了3个开发者预览版,我们的目标是争取在4到6周内或争取更快的时间内发布最终版本。在最近的开发者预览版,我们首次发布了新的Grid组件。新的grid已经重写,而且比3.x版本的有更多功能。新的grid不但大幅提高了性能,而且更加灵活,因此扩展它和增加新的功能比以往更容易。本文将介绍这些新的特性。
  智能渲染
  在Extjs 3,Grid工作得相当好,不过它是根据"最小公分母"方法来实现其丰富功能的,它始终根据每个Gird的功能生成所有的标记。在大多数情况下,这显得过于沉重。在ExtJS 4,默认的Grid只有轻量级的标记,以及在渲染时,只附加由开发者定义的功能所需的标记。这使页面渲染速度和Grid性能都获得了巨大的提升。
  标准化布局
  随着采用新的智能渲染管线,新Grid的许多部件都被制作成特定的组件并集成到标准的布局管理系统里,而不是依赖定制的内部标记和CSS。这样既维持了完美的单像素UI体验,又把Gird和其余框架的渲染处理统一起来。
  DataView
  在ExtJS 4,新的GridView扩展自标准的DataView类,这不仅最大限度的减少了重复代码,也使得Gird更容易定制。因为它扩展自DataView,所以新的Grid无论使用任何视图,都能够使用相同的选择模型,包括通过键盘操作的非连续选择。
  功能支持
  在Extjs 3,很容易为Gird增加新功能,但是没有一个统一标准的方法。许多附加功能都是使用插件方式提供的,而有些是通过继承子类方式提供。这使某些功能结合起来使用相当困难(如果不是不可能)。
  在ExtJS 4中,可通过Ext.grid.Feature这个基类灵活的扩展Grid的功能。Grid的底层模版可通过Feature类修改,从而可在Grid视图生成时修饰和改变标记。Feature类提供了强大的替代旧的GridView的子类,这样可以使它容易混合和匹配兼容功能。在Grid中新功能的例子包括RowWrap、RowBody和Grouping。
  虚拟滚动
  ExtJS 4的Grid现在支持在渲染过程中缓冲数据,它将提供一个虚拟的,数据负载均衡的视图。GRid现在可以轻松支持没有分页的数百甚至上千条的数据,比在ExtJS 3中Grid处理大量数据时的性能提高不少。
  编辑改进
  在Extjs 3中,开发者要在Grid中实现编辑功能,需要使用Editorgrid,这限制了Grid的灵活性。在ExtJS 4中,可通过Editing插件在任何Grid实例中实现该功能,在所有Grid中都可以重复使用该插件。此外,在ExtJS 3中流行的RowEditor扩展,在ExtJs 4已提升为一个一流的和完全支持的框架组件。
  一个例子
  
  下面是一个使用ExtJS 4定义的具体分组功能的基本Grid。在一个例子中涵盖所有新的功能显得不太现实,因而本例子只是让你体验一下新的Grid。正如你所看到的,Grid的定义方式与ExtJS 3非常相似,但分组功能现在定义起来非常简单,不再象ExtJS 3那样,需要通过定义GroupingView实例来实现。这仅仅是ExtJS 4中灵活性的其中一个例子。此外,分组现在可以直接在标准Store中实现,从而不再需要使用GroupingStore。 1 Ext.onReady(function(){
  2 Ext.regModel('Teams',{
  3 fields:['name','sport'] 4 }); 5
  6 varteamStore=newExt.data.Store({
  7 model:'Teams',
  8 sorters:['sport','name'],
  9 groupField:'sport',
  10 data:[
  11 {name:'Aaron',sport:'TableTennis'},
  12 {name:'Aaron',sport:'Football'},
  13 {name:'Abe',sport:'Basketball'},
  14 {name:'Tommy',sport:'Football'},
  15 {name:'Tommy',sport:'Basketball'},
  16 {name:'Jamie',sport:'TableTennis'},
  17 {name:'Brian',sport:'Basketball'},
  18 {name:'Brian',sport:'TableTennis'} 19 ]
  20 }); 21
  22 vargrid=newExt.grid.GridPanel({
  23 renderTo:Ext.getBody(),
  24 store:teamStore,
  25 width:400,
  26 height:300,
  27 title:'SportsTeams',
  28 items:[{
  29 features:[{
  30 ftype:'grouping' 31 }],
  32 headers:[{
  33 text:'Name',
  34 flex:1,
  35 dataIndex:'name' 36 },{
  37 text:'Sport',
  38 dataIndex:'sport' 39 }] 40 }] 41 });
  42 });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值