1 Ext.data.ConnectionExt.data.Connection是对Ext.lib.Ajax 的封装
var conn=new Ext.data.Connection({
autoAbort:false, //连接是否会制动断开
defaultHeaders:{ //参数表示请求的默认首部信息
referer:'http://localhost:8080/'
},
disableCaching: false, //请求是否禁用缓存
extraParams :{ //请求的额外参数
name:'name'
},
method:'GET',
timeout:300,
url:'01.txt
});
创建了conn之后,可以调用request() 函数发送请求,处理返回结果
conn.request({
success: function (response){
Ext.Msg.alert('info',response..responseText);
},
failure : function(){
Ext.Msg.alert('warn','failure');
}
});
2 Ext.data.Record Ext.data.Record 就是设定了内部数据类型的对象, 他是Ext.data.Store 的最基本组成部分,如果把Ext.data.Store看做是一张二维表,那么它的每一行就对应一个Ext.data.Record的实例。
Ext.data.Record 的主要功能是保存数据,并且在内部数据发生改变时记录修改的状态,我们使用Ext.data.Record时通常都是由create()函数开始,首先用create()函数创建一个自定义Record类型,
var PersonRecord=Ext.data.Record.create([
{name:'name',type:'string'},
{name:'sex',type:'int'}
]);
PersonRecord是我们定义的新类型,包含字符串类型的name和整数类型的sex两的属性。
var boy=new PersonRecord({
name:'boy',
sex:0
});
alert(boy.data.name);
或 alert(boy.get('name'));
这里涉及到Ext.data.Rexord的data属性,这是定义在Ext.data.Record的一个公共属性,用于保存当前的Record对象的所有数据,可以通过Ext.data.Record的get()函数方便的从data属性中获得指定的属性值
boy.set('name','boy name'); 用于修改boy中属性的数据
3 Ext.data.StoreExt.data.Store是Ext中用来进行数据交换和数据交互的标准中间件,无论是Grid还是ComboBox,都是通过它实现数据读取,类型转换,排序分页和搜索等操作的。
Ext.data.Store中有一个Ext.data.Record的数组,所有的数据都存放在这些Ext.data.Record 实例中,为后面的读取和修改操作做准备
var data=[
['boy',0],
['girl',1]
];
var store=new Ext.data,Store({
Proxy: new Ext.data.MemoryProxy(data),
reader:new Ext.data.ArrayReader({},PersonRecord)
});
store.load();
每个store 最少需要两个组件支持,分别是proxy和reader,proxy用于
从某个途径读取原始数据,reader用于
将原始数据转换成Record实例。这里我们使用的是Ext.data.MemoryProxy和Ext.data.ArrayReader,将data数组中的数据转换成对应的几个PersonRecord的实例,然后放入Store中。store创建完毕之后执行store.load() 实现这个转换过程。
经过转换之后,store里的数据就可以提供该Grid或Combox使用了。
4 对数据进行排序Ext.data.store提供了一系列属性和函数,利用它们对数据进行排序操作
var store=new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader:new Ext.data.ArrayReader({},PersonRecord),
sortInfo:{ field:'name', direction:'DESC'}
});
使用store.setDefaultSort('name','DESC');也可以达到同样的效果
或 store.sort('name','DESC');
5 从store 中获取数据根据record 在store中的行号获得对应得record,得到了record就可以使用get()函数获得里面的数据了,
store.getAt(0).get('name')
遍历:
for(var i=0;i<store.getCount();i++)
{var record=store.getAt(i);
alert(record.get('name'));
}
或
store.each(function(record){
alert(record.get('name'));
});
each可以接受一个函数作为参数,遍历内部record。并将每个record作为参数传递给function()处理,如果希望停止遍历,可以让function()返回false
也可以使用getRange()函数连续获得多个record,只需要指定开始和结束的索引值,如下面代码所示:
var records=store.getRange(0,1);
for(var i=0;i<records.length;i++)
{var record=record[i];
alet(record.get('name'));
}