ExtJs中的数据处理主要通过三个类来实现
* 数据代理类:Ext.da
* 数据读取器类:Ext.da
* 数据存储类:Ext.da
一.Ext.da
1 数据来源于内存(本地) 使用Ext.da
2 数据来源于同一域的远程服务器(同域远程) 使用Ext.da
3 数据来源于不同域的远程服务器 使用Ext.da
一般而言,这三种数据代理类已经够了,但是你还是可以继承Ext.da
二.Ext.da
1 数据源格式为数组使用:Ext.da
2 数据源格式为json使用:Ext.da
3 数据源格式为xml使用:Ext.da
三.Ext.da
通过一,二配置好Ext.da
var store=new Ext.da
proxy:proxy,
reader:reader,
autoLoad:true
})
四.将Store放入Gridpanle或组件中即可为组件提供数据
五.举例
1 创建一个MemoryProxy
var cities = [
[1,"北京市"],
[2,"天津市"],
[3,"上海市"]
]
var proxy = new Ext.da
2 创建一个DataReader
每个数据项都是一个Ext.Da
var City = Ext.da
{name:"cid",type:"int",mapping:0},
{name:"cname",type:"String",mapping:1}
});
var reader = new Ext.da
3 组装Store
var store=new Ext.da
proxy:proxy,
reader:reader,
autoLoad:true //即时加载数据,默认为false不加载需要调用load()方法才能加载
});
4 使用Store
有了store,把它填充到ComboBox或GridPanel即可
来个例子:
var combobox = new Ext.form.ComboBox({
renderTo:Ext.getBody(), //渲染目标
triggerAction:"all", //是否开启自动查询
store:store,
displayField:"cname",
valueField:"cid",
mode:"local", //数据模式 remote/local
emptyText:"请选择城市" //无任何选择时的显示文字
})
两个重要方法
combobox.getValue(); //获得值
combobox.getRawValue(); //获得文本值
5 总结
看完整的例子
Ext.on
// 1. 定义一个MemoryProxy
var cities = [
[1,"北京"],
[2,"上海"],
[3,"天津"]
];
var proxy = new Ext.da
// 2. 定义一个DataReader
//注意此时配置type时string数据类型为小写
var City = Ext.da
{name:"cid",type:"int",mapping:0},
{name:"cname",type:"string",mapping:1}
]);
//var reader = new Ext.da
var reader = new Ext.da
// 3. 定义一个Ext.da
var store = new Ext.da
proxy:proxy,
reader:reader,
autoLoad:true
});
//加载数据若为数组的话可简写为
var simplestore = new Ext.da
fields: ['cid', 'cname'],
da
});
//alert('City:'+Ext.encode(City));
store.load();
// 4. 在combox中使用store
var comBox = new Ext.form.ComboBox({
store:store,
displayField:"cname",
valueField:"cid",
mode:"local", //local/remote
emptyText:"请选择城市",
triggerAction:"all", //all/query 设置是否输入时是否触发查询数据
renderTo:Ext.getBody()
});
var comBox1 = new Ext.form.ComboBox({
store:simplestore,
displayField:"cname",
valueField:"cid",
mode:"local", //local/remote
emptyText:"请选择城市",
triggerAction:"all", //all/query 设置是否输入时是否触发查询数据
renderTo:"test"
});
})