日期:2014-05-16  浏览次数:20278 次

ExtJS表格

1.?简单表格控件??(由类Ext.grid.GridPanel来定义)
2.?可编辑表格控件(由类Ext.grid.EditorGridPanel定义)
3.?属性表格控件???(由类Ext.grid.PropertyGrid定义)
4.?分组表格控件???(由类Ext.grid.Group定义)
基本介绍
???表格由类Ext.grid.GridPanel定义,继承于Ext.Panel,其xtype为grid,在Ext中?表格控件必须包含列定义信息,并指定表格的数据存取器。表格的
列由Ext.grid.ColumnModel定义,数据存取器由Ext.data.Store定义。根据解析数据的不同,数据存取器可分为JsonStore、SimpleStore、GroupingStore等。


Ext表格包含的功能
1.?选择一条记录、选择多条记录、突出显示选中行
2.?调整列宽、列排序、显示行号、支持复选框、设置查看某些列
3.?支持本地分页和远程分页
4.?可编辑表格、添加新行、删除一行或多行。
5.?数据校验
6.?拖放改变表格大小、拖放一行或多行、树形和表格之间进行数据拖放。


定义列信息
???表格是二维的,列由Ext.grid.ColumnModel类定义,?简称cm,它是整个表格的列模型,其由columns配置属性来描述,columns是一个数组,每一行数据
元素描述表格的一列信息,包含的信息如下:
header:?列标题
dataIndex:?列对应的记录集字段
sortable:?列是否可排序
renderer:?列的渲染函数
width:????列宽度
format:???格式化信息
如:
??var?cm?=?new?Ext.grid.ColumnModel([
????????{?header:?'编号',?dataIndex:?'id'?},
????????{?header:?'名称',?dataIndex:?'name'?},
????????{?header:?'描述',?dataIndex:?'descn'?},
????]);

定义数据
表结构确定后,就可以定义数据,如下:?
var?data?=[[1,2,3],[4,5,6],[7,8,9]]??--使用二维数组定义数据

定义数据存储对象
??数据存储对象由Ext.data.Store类来定义,数据存储对象负责把各种各样的原始数据(如二维数组、JSON对象数组、XML文本等)等转换成表格可以识别的
Ext.data.Record类型的对象,这样就可以把任何格式的数据转换成表格可以使用的形式。
Store对应二个部分:?proxy和reader。
proxy:?获取数据的方式,?Ext.data.MemoryProxy,它是专门用来解析JavaScript变量的。在定义时只需要把data作为参数传递进去即可。
reader:?如何解析数据,Ext.data.ArrayReader专门用来解析数组,主要是设置如何使数据和列对应。主要由name和mapping指定,name对应列的dataIndex。
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????mapping对应列的索引
最后需要执行store.load()?来初始化数组。

下面是一个完整的示例:
?Ext.onReady(function()?{
????????--定义列信息
????????var?cm?=?new?Ext.grid.ColumnModel([
????????????{?header:?'编号',?dataIndex:?'id'?},
????????????{?header:?'名称',?dataIndex:?'name'?},
????????????{?header:?'描述',?dataIndex:?'descn'?}
????????]);

???????--定义二维数组数据
????????var?data?=?[
????????????['1',?'name1',?'descn1'],
????????????['2',?'name2',?'descn2'],
????????????['3',?'name3',?'descn3'],
????????????['4',?'name4',?'descn4'],
????????????['5',?'name5',?'descn5']
????????];
????????--定义数据存储对象
????????var?store?=?new?Ext.data.Store({
????????????proxy:?new?Ext.data.MemoryProxy(data),??--从内存获取数据
????????????reader:?new?Ext.data.ArrayReader({},?[??--使用数组解析器解析数组
????????????????{?name:?'id',mapping:1?},
????????????????{?name:?'name',mapping:0?},
????????????????{?name:?'descn'?}
????????????])
????????});
????????--初始化数据
????????store.load();??

????????--装配数据
????????var?grid?=?new?Ext.grid.GridPanel({
??????????????autoHeight:?true,
??????????????renderTo:?'grid',
??????????????store:?store,
??????????????cm:?cm
????????????});

????});

?

?

一、?取消列拖动,取消列调整大小,行的斑马线效果
????默认的表格展现在我们面前的时候,列的顺序可以随意移动,也可以随意调整列宽,如何禁用了?
????enableColumnMove:??false
????enableColumnResize:?false
????stripeRows:true
例如:
????var?grid?=?new?Ext.grid.GridPanel({
?????????????cm:?cm,????????????--设置列定义
?????????????store:?store,??????--设置数据存取对象
?????????????autoHeight:?true,??--自动适应行高
?????????????stripeRows:true,???--显示斑马线效果
?????????????renderTo:?'grid'???--渲染表格到div等于grid的容器中