extjs学习笔记----数据的获取与ComboBox

Ext.data和ComboBox:
Ext.data命名空间下的类来组织和管理数据:
Ext.data下的三个类:DataProxy,DataReader,Store;
以数据库表为例来讲解三个类的作用:
	DataProxy:相当于表中的数据;
	DataReader:相当于表中的列;
	Store:相当于一张表(存储列和数据);
1、Ext.data.DataProxy:获取数据的代理,数据可以来自与内存、同一个区域的远程服务器,
			或者不同域的远程服务器;
		在实际应用中我们不会直接使用Ext.data.DataProxy,而是使用他的子类:
			MemoryProxy,HttpProxy和ScriptTagProxy,他们的作用分别是:
				MemoryProxy:获取来自内存的数据,可以是数组、json或者xml;
				HttpProxy:使用HTTP协议通过ajax从远程服务器获取数据的代理,需要制定url;
				ScriptTagProxy:功能和HttpProxy一样,但是支持跨域获取数据;
				var cities=[[1,"济南市"],
							[2,"南京市"],
							[3,"北京市"]];
				var proxy=new Ext.data.MemoryProxy(cities);
2、Ext.data.DataReader:用来定义数据(行)的逻辑结构,主要信息有:列名称(name),
						列的数据类型(type),列于数据源的索引映射(mapping)等
			每一个数据项都是一个Ext.data.Record(记录)对象,数据项的列信息是通过
			Ext.data.Record来定义的,Ext.data.Record并没有固定的结构,它保存的
			是一个json对象数组;
			var City=Ext.data.Record.create([{name:"cid",type:"int",mapping:0},
											{name:"cname",type:"string",mapping:1}]);
			Record创建好后,必须和DataReader关联,DataReader也同样有三个子类:
			Ext.data.ArrayReader、Ext.data.JsonReader、Ext.data.XmlReader;使用
			哪一个子类决定与DataProxy中封装的数据类型。
			//var reader=new Ext.data.ArrayReader({},City);
			var reader=new Ext.data.ArrayReader({},[
				{name:"cid",type:"int",mapping:0},
				{name:"cname",type:"string",mapping:1}
			]);
3、Ext.data.Store:存储数据,用来把DataProxy和DataReader整合在一起。
		var store=new Ext.data.Store({
			proxy:proxy,
			reader:reader,
			autoLoad:true//即时加载数据----作用是:store.load()
		});
4、ComboBox:
	var combobox=new Ext.form.ComboBox({
		renderTo:Ext.getBody(),
		triggerAction:"all",//是否开启自动查询功能,all表示不开启,query表示开启
		store:store,
		displayField:"cname",//关联Record的某一个逻辑列名作为显示值
		valueField:"cid",//关联Record的某一个逻辑列名作为实际值
		mode:"local",//local表示本地,远程服务器必须用remote
		emptyText:"请选择济南市"
	});
5、得到下拉列表框的值:
	var btn=new Ext.Button({
		text:"列表框的值",
		renderTo:Ext.getBody(),
		handler:function(){
			Ext.Msg.alert("值","实际值:"+combobox.getValue()+";显示值:"+combobox.getRawValue());
		}
	});
	
6、全部代码:
	Ext.onReady(function (){
		var cities=[[1,"济南市"],
					[2,"南京市"],
					[3,"北京市"]];
		var proxy=new Ext.data.MemoryProxy(cities);
		
		var City=new Ext.data.Record.create([{name:"cid",type:"int",mapping:0},
										{name:"cname",type:"string",mapping:1}]);
		var reader=new Ext.data.ArrayReader({},City);
		//数据源
		var store=new Ext.data.Store({
			proxy:proxy,
			reader:reader,
			autoLoad:true
		});
		
		var comboBox=new Ext.form.ComboBox({
			renderTo:Ext.getBody(),
			triggerAction:'all',
			store:store,
			displayField:'cname',
			valueField:'cid',
			mode:'local',
			emptyText:'请选择地市'
		});
		var btn=new Ext.Button({
			renderTo:Ext.getBody(),
			text:"列表框的值",
			handler:function(){
				Ext.MessageBox.alert("值","实际值:"+comboBox.getValue()+";显示值:"+comboBox.getRawValue());
			}
		});
	});

			


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bzuld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值