Extjs二级联动

Extjs combox根据省查询城市

实现效果如上图所示,

store层代码:

 Ext.define("ExtApp.store.TeacherProvince",{
extend:"Ext.data.Store",
fields:['provinceCode','provinceName'],
autoLoad:true,
proxy:{
type:"ajax",
url : 'getProvinces.action',
reader:{
type:"json",
root:"rows",
totalProperty:"results"
}
}
});

view层:

 {
  xtype : 'combo',
fieldLabel:'省份',
name:'provinceName',
margin:'0 3 0 0',
flex:1,
id : 'cobTeacherProvince',
store : 'TeacherProvince',
valueField : 'provinceCode',
displayField : 'provinceName',
editable : false,
emptyText : '请先选省',
queryMode : 'local'
},{
xtype : 'combo',
margin:'0 0 0 3',
flex:1,
id : 'cobTeacherCity',
store : Ext.create('Ext.data.Store', {
  fields : ['cityCode','cityName'],
autoSync : true,
proxy : {
  type : 'ajax',
url : 'getCitys',
reader : {
type : 'json',
root:"rows",
totalProperty:"results"
}
}
}),
valueField : 'cityCode',
displayField : 'cityName',
editable : false,
emptyText : '请选对应的城市',
queryMode : 'local',
fieldLabel : '城市',
name:'cityName'
}

  controller层:

 StudentDetailsCity:function(combo, record){
var StudentDetailsCity= Ext.getCmp('cobStudentDetailsCity')
var StudentDetailsCityStore = StudentDetailsCity.getStore();
StudentDetailsCity.reset();
StudentDetailsCityStore.load({
params:{'provinceName':combo.getValue()==null?"":combo.getValue()},
callback:function(records, operation, success){
if(records.length==1){
StudentDetailsCity.setValue(records[0]);
}
else{
StudentDetailsCity.setValue("选择市");
}
}
});
},

记录的问题:

 选择省之后,把城市Store换掉,然后根据callback函数,根据返回城市的个数显示:

  1,如果只有一个城市,就显示一个城市

    2,如果有多个城市,就显示选择城市

记住:store的callback函数和params

完善1:

通过组件的setValue方法

完善2:如何不改变省,只改变城市?

问题:这里改变城市为啥不能用select?

原因:因为city的store为空,只有在改变省份的时候,才调用getcitys.action ,将省名ProvinceName传递过去

所以不改变省就获取不到城市的store,所以要在citycombox添加一个监听事件,点击了就将store展开

select是选择事件,比如说好多省,选择之后触发城市store reset事件

expand是将组件展开组件事件,目的是将组件展开

 //修改城市
StudentDetailsChangeCity:function(combo, record){
var provinceName=Ext.getCmp('cobStudentDetailsProvince').getValue();
var StudentDetailsCity= Ext.getCmp('cobStudentDetailsCity')
var StudentDetailsCityStore = StudentDetailsCity.getStore();
StudentDetailsCity.reset();
StudentDetailsCityStore.load({
params:{'provinceName':provinceName==null?"":provinceName}
});
},

或者在load整个表格数据的时候,就将city的store加载,这样就不用添加对city combo的监听了

 loadData:function(form,opts){
form.load({
url:'queryInf',
success:function(){
var TeacherCityStore = Ext.getCmp('cobTeacherCity').getStore();
var provinceName=Ext.getCmp('cobTeacherProvince').getValue();
TeacherCityStore.load({
params:{'provinceName':provinceName==null?"":provinceName}
});
}
});
}

Extjs二级联动combo省城市的更多相关文章

  1. 通过Ajax异步提交的方法实现从数据库获取省份和城市信息实现二级联动(xml方法)

    之前有写过是从JavaScript数组里获取省市信息来实现二级联动,但是似乎有很多需求是要从数据库里获取信息,所以就需要根据异步提交,局部刷新的思想来实现来提高用户交互问题 第一种方法是xml方法 1 ...

  2. asp.net mvc jQuery 城市二级联动

    页面效果图: 数据库表结构: 首先在数据库中创建省级.城市的表,我的表如下:我用了一张表放下了省级.城市的数据,用level划分省份和城市,parentId表示该城市所在省份的id 主要文件有:ind ...

  3. Ajax实现的城市二级联动二

    上一篇联动一种只是城市用ajax请求获取并渲染,这里将省份也用ajax请求并渲染 1.HTML <select id="province"> <option> ...

  4. Ajax实现的城市二级联动一

    前一篇是把省份和城市都写在JS里,这里把城市放在PHP里,通过发送Ajax请求城市数据渲染到页面. 1.html <select id="province"> < ...

  5. jq简单城市二级联动实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. js实现城市二级联动列表

    这个是一个同事写的,我看着有用,就cv下来了. 程序功能主要逻辑是: 1.当一级标签市显示默认状态 '-请选择-'时,二级标签要隐藏 2.一级标签选中城市时,二级标签显示在页面,并列出响应市区 3.当 ...

  7. 份-城市,基于jQuery的AJAX二级联动,用Struts2整合AJAX【非数据库版】

    package loaderman.provincecity; import java.io.IOException; import java.util.LinkedHashSet; import j ...

  8. asp.net 使用DroDownList来实现二级联动

    今天做新闻发布系统的时候,用到了二级联动,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们.下面是效果图: 下面来讲解一下实现的方法: 1.在.aspx页面中,拖入两个DroDownList控件. ...

  9. 利用JavaScript来实现省份—市县的二级联动

    所谓省-市二级联动是指当选择省份下拉选择框时,市县的下拉框会根据选择的省市而有相应的市县加载出来,如下图所示选择"上海市",城市的下拉选择框只会出现上海的市县: 这种二级联动非常常 ...

随机推荐

  1. RK3288获取摄像头的Sensor ID【原创】

    平台信息:内核:linux3.0.68 系统:android/android6.0平台:RK3288 作者:庄泽彬(欢迎转载,请注明作者) 邮箱:2760715357@qq.com 说明:通过I2C总 ...

  2. YTU 2530: 小勇玩lol

    2530: 小勇玩lol 时间限制: 1 Sec  内存限制: 128 MB 提交: 112  解决: 77 题目描述 小勇是一个忠实的lol玩家,他有自己的战斗力计算方法,每个星期他都会算一下自己的 ...

  3. HDU 1394 线段树or 树状数组~

    Minimum Inversion Number Description The inversion number of a given number sequence a1, a2, ..., an ...

  4. Keepalived+lvs 搭建高可用负载均衡

    本站点停止更新,请访问:blog.coocap.com 不了解负载均衡高可用的童鞋,强烈建议先看keepalived+nginx高可用负载均衡: 传送门(求粉):http://www.cnblogs. ...

  5. android 反编译 for mac

    android反编译现在来说的话很方便. windows上有不好好用的工具,当然我比较喜欢dex2jar 这个是比较好用的,打开他的文件目录会发现,里面有很多.sh .bat文件 那也就是说在wind ...

  6. 编程细节 —— 按值传递、按引用传递(final、const)

    System.out,out 是 System 类内定义的静态 final PrinterStream 变量: public final class System { ... public final ...

  7. Python基础第二天

    一.内容 二.练习 练习1 题目:已知msg='hello knight 666'编写for循环,利用索引遍历出每一个字符 图示: 代码: msg = 'hello knight 666' msg_l ...

  8. 【培训】MySQL

    yum安装mysql:yum -y install mysql*- 或者 yum -y install mysql* 启动数据库服务:/etc/init.d/mysqld start 或者 servi ...

  9. CodeForces 515C Drazil and Factorial (水题)

    题意:给出含有 n 个只有阿拉伯数字的字符串a,设定函数F(a) = 每个数字的阶乘乘积 .需要找出 x,使得F(x) = F(a),且组成 x 的数字中没有0和1.求最大的 x 为多少. 析:最大, ...

  10. Linux 下安装配置 JDK7(转载)

    转自:http://dawndiy.com/archives/155/ 自从从Oracle收购Sun近三年来,已经有很多变化.早在8月,甲骨文将“Operating System Distributo ...