首页 > 其他分享 >ExtJS 4 Grid组件

ExtJS 4 Grid组件

时间:2023-05-21 14:02:30浏览次数:39  
标签:功能 name Ext Grid 组件 sport ExtJS


我们正在努力为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。

Ext . onReady ( function ( ) {
2	Ext . regModel ( ' Teams ' , {
3	fields : [ ' name ' , ' sport ' ]
4	} ) ;
5	
6	var teamStore = new Ext . data . Store ( {
7	model : ' Teams ' ,
8	sorters : [ ' sport ' , ' name ' ] ,
9	groupField : ' sport ' ,
10	data : [
11	{ name : ' Aaron ' , sport : ' Table Tennis ' } ,
12	{ name : ' Aaron ' , sport : ' Football ' } ,
13	{ name : ' Abe ' , sport : ' Basketball ' } ,
14	{ name : ' Tommy ' , sport : ' Football ' } ,
15	{ name : ' Tommy ' , sport : ' Basketball ' } ,
16	{ name : ' Jamie ' , sport : ' Table Tennis ' } ,
17	{ name : ' Brian ' , sport : ' Basketball ' } ,
18	{ name : ' Brian ' , sport : ' Table Tennis ' }
19	]
20	} ) ;
21	
22	var grid = new Ext . grid . GridPanel ( {
23	renderTo : Ext . getBody ( ) ,
24	store : teamStore ,
25	width : 400 ,
26	height : 300 ,
27	title : ' Sports Teams ' ,
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	} ) ;

标签:功能,name,Ext,Grid,组件,sport,ExtJS
From: https://blog.51cto.com/dqhuang/6319227

相关文章

  • ExtJS 4 Beta 2预览:Ext.Brew包
       我们还没有介绍过ExtJS4众多特性之一的新Ext.Brew包。这是独一无二的Javascript框架,Ext.Brew是采用Sencha独特技术酿造的的一杯完美的茶。   使用新数据包的强大功能,可在任何时候构建一个生成一致均衡的茶的应用程序。开始之前,首先定义一个部件之间用于交互的模型。Ex......
  • delphi cxgrid截图
    效果图: 点击GetImage,会在程序目录下生成一个表格截图的图片文件,打开后如下图:以下是代码:procedureTForm4.SpeedButton1Click(Sender:TObject);vargridView:TcxGridDBTableView;focusedItem:TcxCustomGridTableItem;focusedRect:TRect;aBitmap:TBitm......
  • 组件化编程
    模块与组件模块向外提供特定功能的js程序--一般就是一个js文件作用--复用js、简化js的编写、提高js运行效率模块化--当应用中的js都是以模块来编写的--这个应用就是一个模块化的应用组件用来实现局部(特定)功能效果的代码集合作用--复用编码--简化项目编码、提高运行......
  • 模块与包,反序列化源码解析,drf请求响应,视图组件两个视图基类
    0模块与包的使用#模块与包 -模块:一个py文件,被别的py文件导入使用,这个py文件称之为模块,运行的这个py文件称之为脚本文件-包:一个文件夹下有__init__.py#模块与包的导入问题 '''0导入模块有相对导入和绝对导入,绝对的路径是从环境变量开始的1......
  • vue3+vant3封装省市区组件
    因为后台返回的数据格式和vant不一致,所以自己遍历循环得到自己想到的格式。省市区的接口并不是一个以children格式,一次性全部获取,而是选择市的时候需要得到省的id,一层一层请求接口才能得到省市区。 父组件:1<selectArea2@addressOnFinish="onChangeArea"3......
  • CxGrid合计相关
    1.OnSummaryAfterSummary事件,CxGrid合计计算后触发此事件可以在事件里获取其值,做相关处理//实售价if(cxGrid1DBTableView1.DataController.Summary.FooterSummaryValues[0]<>null)thenbegin//ThisTimeAccount.Caption:=FloatToStr(cxGridDBTableView1.DataContro......
  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信。1.父组件向子组件传值(props)下面通过一个例子说明父组件如何向子组件传递数据:在子组件article.vue中......
  • vue组件通信6种方式总结(常问知识点)
    前言在Vue组件库开发过程中,Vue组件之间的通信一直是一个重要的话题,虽然官方推出的Vuex状态管理方案可以很好的解决组件之间的通信问题,但是在组件库内部使用Vuex往往会比较重,本文将系统的罗列出几种不使用Vuex,比较实用的组件间的通信方式,供大家参考。组件之间通信的场景在......
  • Vue中的动态组件
    1,定义:动态组件就是将几个组件放在一个挂载点下,这个挂载点就是标签,其需要绑定is属性,属性值为父组件中的变量,变量对应的值为要挂载的组件的组件名,然后根据父组件里某个变量来动态显示哪个,也可以都不显示,2,使用:<component>元素是vue里面的一个内置组件。在里面使用v-bind:is,可以实现......
  • Qt之格栅布局(QGridLayout)
    QGridLayout是Qt框架中的一个布局管理器类,用于将子部件按照网格方式排列。它是QLayout类的子类,可在水平和垂直方向上自动调整和布局子部件的位置和大小。以下是QGridLayout的一些特点和用法:1.网格布局:QGridLayout将子部件按照网格形式排列,每个子部件占据一个单元格。可以根据需......