Ext.form.ComboBox实现省、市、县级联
2014-09-28 16:23
288 查看
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 13.3333339691162px; background-color: rgb(255, 255, 255);"> </span><span style="font-size:18px;font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><strong>使用Ext.form.ComboBox和后台数据库数据Ajax实现省、市、县三级级联。</strong></span>
一、 创建store 远程加载数源
<span style="font-size:18px;"> //创建stroeProvince 省份的数据源 var stroeProvince= new Ext.data.Store({ proxy:{ type:'ajax', // Ajax方式获取数据 url:'GetRegionServlet?type=Province', // /获取数据的路径 reader : { type : 'json', //返回数据类型为json格式 root : 'Province' //数据 } }, fields :[{name:'ProID'},{name:'ProName'}] }); //创建stroeCity 市的数据源 var stroeCity=new Ext.data.Store({ proxy:{ type:'ajax', url:'GetRegionServlet?type=City', reader : { type : 'json', root : 'City'} }, fields :[{name:'CityID'},{name:'CityName'}] }); //创建stroeDistrict 区、县的数据源 var stroeDistrict=new Ext.data.Store({ proxy:{ type:'ajax', url:'GetRegionServlet?type=District', reader : { type : 'json', root : 'District'} }, fields :[{name:'Id'},{name:'DisName'}] });</span>
二、 创建ComboBox 绑定数据源到ComboBox
<span style="font-size:18px;"><span style="white-space:pre"> </span>// 创建省份ComboBox var comboProvince= new Ext.form.ComboBox({ store:stroeProvince, emptyText:'请选择', //默认项 mode:'local', //数据请求方式 triggerAction: 'all', //设置成'all' 避免ComboBox使用autoComplete的效果,让每次选择都可以查看到所有的数据 valueField: 'ProID', //数据 displayField: 'ProName',//显示数据 editable: false, //设置成false 避免用户输入无效信息 renderTo: 'comboProvince' //渲染的地方 }); var comboCity=new Ext.form.ComboBox({ store:stroeCity, emptyText:'请选择', mode:'local', triggerAction: 'all', valueField: 'CityID', displayField: 'CityName', editable: false, renderTo: 'comboCity' }); var comboDistrict=new Ext.form.ComboBox({ store:stroeDistrict, emptyText:'请选择', mode:'local', triggerAction: 'all', valueField: 'Id', displayField: 'DisName', editable: false, renderTo: 'comboDistrict' });</span>三、创建事件监听(远程)
<span style="font-weight: normal;"><span style="font-size:18px;">stroeProvince.load(); //下面代码给三个ComboBox都设置了on()的事件监听。 使用到stroe.proxy.url 这步操作就会改变store内部数据 //监听事件(远程) comboProvince.on('select',function(comboBox){ var ProID=comboBox.getValue(); stroeCity.proxy.url='GetRegionServlet?type=City&ProID=' + encodeURIComponent(encodeURIComponent(ProID)); stroeCity.reload(); }); comboCity.on('select',function(comboBox){ var CityID=comboBox.getValue(); stroeDistrict.proxy.url='GetRegionServlet?type=District&CityID=' + encodeURIComponent(encodeURIComponent(CityID)); stroeDistrict.reload(); }); comboDistrict.on('select',function(comboBox){ alert(comboProvince.getRowValue()+'-'+comboCity.getRowValue()+'-'+comboDistrict.getRowValue()); }); //从上述代码可以看出,先执行stroeProvince.load();,将省份数据初始化。然后判断用户选择了省级信息的哪一项, // 取得数据后再调用市级ComboBox的load()函数去后台读取数据</span></span>
需要注意的是,因为Ajax默认的使用UTF-8编码传输数据,所以需要把编码格式都换成UTF-8编码格式,否则会出现乱码。 后台的request和response都需要进行处理,统一使用UTF-8编码。
主程序体很简单,先获得type的值,进而判断后面要读取省、市、县的哪一部分信息,根据type分别进入各自的流程。
相关文章推荐
- Ext.form.field.ComboBox结合Servlet、JSON实现AutoComplete
- 采用ExtJS4.2的Ext.form.ComboBox实现自动完成
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- 可输入可联想的下拉列表的实现——Ext ComboBox
- 使用Ext的Grid,Form,Dialog来实现分页列表,创建,修改,删除功能
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- 继承Ext.form.TriggerField,实现树下拉选择(新增示例下载)
- 扩展Ext.form.DateField实现定义日期面板默认展示日期
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField(转)
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- Ext formpanel 动态添加 表单 的一种实现方法
- 使用Ext中的Grid,Form,Dialog来实现列表,创建,更新,删除,查找和分页功能
- Ext.form.ComboBox提交始终获得displayField的值-解决
- Ext.form.ComboBox 表格下拉最终版本
- Ext.form.ComboBox 基本定义
- EXT2.0学习一: 让Ext.form.ComboBox通过Dwr获取数据
- Ext.form.ComboBox 属性详解及使用方法介绍和级联使用
- Ext.widgets-form(下)ComboBox,TimeField,DateField,TriggerField,TextArea,NumberField
- 如果使用Ext.form.ComboBox 作为editor,并设置了store,在选择后,在表格单元中显示的是store中的displayfield 而不是valuefield