在页面上,多个ext下拉列表读取同一个json数据,要每个下拉都要load一次吗?没load一次的话,又会去执行对应的类去读取json,不load的话不出数据,每个都load的话又有多次读取数据库的问题看下面我的代码。有什么好的方法解决?要只读一次数据库!JSONObject json=new JSONObject();List<TbCommonConst> UserGender=…………
List<TbCommonConst> Marriage=…………
List<TbCommonConst> PoliticStatus=…………
List<TbCommonConst> Education=…………
List<TbCommonConst> PersonStatus=…………JSONArray JUserGender=JSONArray.fromObject(UserGender);
json.put("UserGender", JUserGender);
        
JSONArray JMarriage=JSONArray.fromObject(Marriage);
json.put("Marriage", JMarriage);
        
JSONArray JPoliticStatus=JSONArray.fromObject(PoliticStatus);
json.put("PoliticStatus", JPoliticStatus);
        
JSONArray JEducation=JSONArray.fromObject(Education);
json.put("Education", JEducation);
        
JSONArray JPersonStatus=JSONArray.fromObject(PersonStatus);
json.put("PersonStatus", JPersonStatus);以上就是json数据,可以顺利输出,而且前台也可以顺利的接收,没问题,问题在下面
    var ConstProxy=new Ext.data.HttpProxy({
     url:'PersonConst.action'
    });    var UserGenderStroe=new Ext.data.JsonStore({
     fields : ['value','code'],
     root:'UserGender',
     proxy:ConstProxy
    });
    UserGenderStroe.load();
    
    var PersonStatusStroe=new Ext.data.JsonStore({
     fields : ['value','code'],
     root:'PersonStatus',
     proxy:ConstProxy
    });
    PersonStatusStroe.load();
    
    var MarriageStroe=new Ext.data.JsonStore({
     fields : ['value','code'],
     root:'Marriage',
     proxy:ConstProxy
    });
    MarriageStroe.load();    var PoliticStatusStroe=new Ext.data.JsonStore({
     fields : ['value','code'],
     root:'PoliticStatus',
     proxy: new Ext.data.HttpProxy({
url: 'PersonConst.action'            
})
    });
    PoliticStatusStroe.load();
    
    var EducationStroe=new Ext.data.JsonStore({
     fields : ['value','code'],
     root:'Education',
     proxy:ConstProxy
    });
    EducationStroe.load();    var editUserGender=new Ext.form.ComboBox
({
fieldLabel: '性别', 
hiddenName:'UserGender',
store:UserGenderStroe,
                  …………
});    var editMarriage=new Ext.form.ComboBox
({
fieldLabel: '性别', 
hiddenName:'UserGender',
store:MarriageStroe,
                  …………
});
…………//一共有5个下拉
看到上面每个stroe都要load一次,如果不load的话对应的combobox就不出数据。
数据源是同一个,要怎么样才能不没个都load一次呢

解决方案 »

  1.   

    当load的哪个完了,回调把store 数据copy给其它的下拉列表。
    我记得写一个jsonStore好像会其中一个下拉杠选择一个值,其它框就会选同样的值 。
      

  2.   

    回1楼,我的数据都是在同一个JsonStore里,
    3楼。liangj2me。。能给点例子么!!这个问题百度谷歌都不好找关键字。
      

  3.   

    先把数据下载到本地
    通过store的loadData()
    直接读取本地数据
      

  4.   

    他这个应当不是同样的内容
    每个combo的root不一样
      

  5.   

    6楼:asdujiayong
    怎么取到本地?我这样不算是取到本地么...
    你是说取到本地存在一个对象里?要怎么写....给个例子~~
      

  6.   


    var ConstProxy=new Ext.data.HttpProxy({
            url:'PersonConst.action'
        });
    //上面这个URL是有效的,但在这里还没进去执行读取数据,要怎么才能放到本地呢?怎么定义一个东西来装这些数据?
        var UserGenderStroe=new Ext.data.JsonStore({
            fields : ['value','code'],
            root:'UserGender',
            proxy:ConstProxy
        });
    //这里一定要load()才能有数据,才会真正执行上面的URL,去读取数据。但这样又得每个都load
        UserGenderStroe.load();
      

  7.   


    你这里的combo加个属性mode:local
    设为本地的
    你可以先发一个ajax请求到后台
    请求成功后 取到数据,在success中
    再用你的几个store分别去
    store.loadData(Ext.util.JSON.decode(response.responseText))//response.responseText 返回的数据 
    store中的proxy不需要了
      

  8.   

    具体例子我也没有
    昨天 看到个贴子
    http://topic.csdn.net/u/20100823/11/1110eae2-cb82-4869-befd-c04612366872.html可以参考 下
      

  9.   

    我的combobox有mode:'local'了,
    我这个不能用异步。。还有别的方法没
      

  10.   


    可以用ajax取道数据,返回的数据是一个json、array。然后用js处理赋值个这些combox的data
    不用异步,那就不会每个都load了。
    如果一定要异步,那是每个都要load的
      

  11.   

    现在就是每次都load()调用了,
    要改成只调用一次,不用每个combobox都调用,会浪费资源,没效率什么的。
      

  12.   

    怎么加载到本地,我是这样写的var ConstProxy=new Ext.data.HttpProxy({
            url:'PersonConst.action'
        });    var UserGenderStroe=new Ext.data.JsonStore({
            fields : ['value','code'],
            root:'UserGender',
            proxy:ConstProxy
        });
        UserGenderStroe.load();        var editUserGender=new Ext.form.ComboBox
    ({
    fieldLabel: '性别', 
    hiddenName:'UserGender',
    name:'code', 
    anchor:"100%",
    triggerAction : 'all',  //显示所有下列数.必须指定为'all'
    store:UserGenderStroe,
    valueField:'code', 
    displayField:'value', 
    mode: 'local', 
        editable:false,
        emptyText:'请选择一个性别'
    });
      

  13.   


    先用Ext.Ajax.request获得数据放到UserGenderStroe.data 中即可
      

  14.   

    我觉得都需要去load吧。这没有关系吧。反正是异步的。