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. 关于The hierarchy of the type TestBeforeAdvice is inconsistent的问题

    今天准备写一个spring aop的demo,创建了TestBeforeAdvice类,该类实现了MethodBeforeAdvice接口,eclipse报了"The hierarchy o ...

  2. 容器Vector原理(学习)

    一.概述 数据结构同ArrayList,底层都是数组存储,只不过是线程同步的,也就是其 操作方法都是synchronized

  3. EJS基本使用

    基本使用 Render 渲染字符串 Compile编译字符串到模板函数(需调用才能生成html内容) <!DOCTYPE html> <html lang="en" ...

  4. 并不对劲的spoj1812

    题意是求多个串的lcs. 这也是道后缀自动机的模板题.对于任意一个字符串建后缀自动机,用其他串查询就行.对于后缀自动机的每个状态要额外记匹配到当前状态的最大长度. 和spoj1811的区别在于这道题不 ...

  5. python 统计文件的个数

    import os path = r'F:\1back\picture' #获取当前路径 count = 0 for root,dirs,files in os.walk(path): #遍历统计 i ...

  6. 深入理解JMM(Java内存模型) --(三)顺序一致性

    数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争.Java内存模型规范对数据竞争的定义如下: 在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序. 当代码 ...

  7. MongoDB一些常用指令与他的JavaScript的对应表

  8. 状压DP UVA 10817 Headmaster's Headache

    题目传送门 /* 题意:学校有在任的老师和应聘的老师,选择一些应聘老师,使得每门科目至少两个老师教,问最少花费多少 状压DP:一看到数据那么小,肯定是状压了.这个状态不好想,dp[s1][s2]表示s ...

  9. 二分图最大匹配(匈牙利算法) POJ 3041 Asteroids

    题目传送门 /* 题意:每次能消灭一行或一列的障碍物,要求最少的次数. 匈牙利算法:把行和列看做两个集合,当有障碍物连接时连一条边,问题转换为最小点覆盖数==二分图最大匹配数 趣味入门:http:// ...

  10. BFS Codeforces Beta Round #94 (Div. 2 Only) C. Statues

    题目传送门 /* BFS:三维BFS,坐标再加上步数,能走一个点当这个地方在步数内不能落到.因为雕像最多8步就会全部下落, 只要撑过这个时间就能win,否则lose */ #include <c ...