zoukankan      html  css  js  c++  java
  • Extjs二级联动combo省城市

    Extjs二级联动

    Extjs combox根据省查询城市

    实现效果如上图所示,

    store层代码:

     1 Ext.define("ExtApp.store.TeacherProvince",{
     2     extend:"Ext.data.Store",
     3     fields:['provinceCode','provinceName'],    
     4     autoLoad:true,                
     5     proxy:{
     6         type:"ajax",
     7         url : 'getProvinces.action',
     8         reader:{
     9             type:"json",
    10             root:"rows",
    11             totalProperty:"results"
    12         }
    13     }
    14 });

    view层: 

     1 {
     2   xtype : 'combo',
     3    fieldLabel:'省份',
     4    name:'provinceName',
     5    margin:'0 3 0 0',
     6    flex:1,
     7    id : 'cobTeacherProvince',
     8    store : 'TeacherProvince',                
     9    valueField : 'provinceCode',
    10    displayField : 'provinceName',                
    11    editable : false,
    12    emptyText : '请先选省',
    13    queryMode : 'local'        
    14 },{
    15    xtype : 'combo',               
    16    margin:'0 0 0 3',
    17    flex:1,
    18    id : 'cobTeacherCity',
    19    store : Ext.create('Ext.data.Store', {
    20      fields : ['cityCode','cityName'],
    21        autoSync : true,
    22        proxy : {
    23          type : 'ajax',
    24           url : 'getCitys',
    25           reader : {
    26               type : 'json',
    27               root:"rows",
    28               totalProperty:"results"
    29           }
    30        }
    31    }),                
    32    valueField : 'cityCode',
    33    displayField : 'cityName',
    34    editable : false,                
    35    emptyText : '请选对应的城市',
    36    queryMode : 'local',
    37    fieldLabel : '城市',                
    38    name:'cityName'
    39 }

     

      controller层: 

     1 StudentDetailsCity:function(combo, record){
     2         var StudentDetailsCity= Ext.getCmp('cobStudentDetailsCity')
     3         var StudentDetailsCityStore = StudentDetailsCity.getStore();    
     4         StudentDetailsCity.reset();            
     5         StudentDetailsCityStore.load({
     6             params:{'provinceName':combo.getValue()==null?"":combo.getValue()},
     7             callback:function(records, operation, success){                
     8                 if(records.length==1){
     9                     StudentDetailsCity.setValue(records[0]);
    10                 }
    11                 else{
    12                     StudentDetailsCity.setValue("选择市");
    13                 }
    14             }
    15         });
    16     },

     

     记录的问题:

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

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

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

    记住:store的callback函数和params

     完善1:

    通过组件的setValue方法

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

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

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

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

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

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

     1 //修改城市
     2     StudentDetailsChangeCity:function(combo, record){
     3         var provinceName=Ext.getCmp('cobStudentDetailsProvince').getValue();
     4         var StudentDetailsCity= Ext.getCmp('cobStudentDetailsCity')
     5         var StudentDetailsCityStore = StudentDetailsCity.getStore();
     6         StudentDetailsCity.reset();
     7         StudentDetailsCityStore.load({
     8             params:{'provinceName':provinceName==null?"":provinceName}        
     9         });
    10     },    

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

     1 loadData:function(form,opts){
     2         form.load({
     3             url:'queryInf',
     4             success:function(){            
     5                 var TeacherCityStore = Ext.getCmp('cobTeacherCity').getStore();
     6                 var provinceName=Ext.getCmp('cobTeacherProvince').getValue();            
     7                 TeacherCityStore.load({
     8                     params:{'provinceName':provinceName==null?"":provinceName}
     9                 });
    10             }
    11         });
    12     }
  • 相关阅读:
    bys_tu_2016
    ciscn_2019_es_1
    jarvisoj_level5
    axb_2019_brop64
    [ZJCTF 2019]EasyHeap
    ciscn_2019_es_7
    Exp1 PC平台逆向破解 相关wp
    picoctf_2018_shellcode
    cmcc_simplerop
    axb_2019_fmt32
  • 原文地址:https://www.cnblogs.com/shipskunkun/p/4548343.html
Copyright © 2011-2022 走看看