//服务器返回json数据
{"totalCount":8,"list":[{"emps":1,"roleid":1,"roleName":"超级管理员"},{"emps":1,"roleid":2,"roleName":"管理员"},{"emps":2,"roleid":3,"roleName":"普通员工"},{"emps":0,"roleid":4,"roleName":"商户"},{"emps":1,"roleid":5,"roleName":"aa"},{"emps":0,"roleid":16,"roleName":"321"},{"emps":0,"roleid":17,"roleName":"zhidan"},{"emps":0,"roleid":18,"roleName":"zhan"}]}Ext.onReady(function() {
var cityReader = new Ext.data.JsonReader({
totalProperty:'totalCount',
root:'list',


}
[{name:'rId',mapping:'roleid'},{name:'rName',mapping:'roleName'}]);
var cityStore = new Ext.data.SimpleStore({ proxy:new Ext.data.HttpProxy({
type:'ajax',
url:'role_findRoleByPage.action',
method:'get'
}),

reader:cityReader,

});
var cityCom = new Ext.form.ComboBox({
fieldLabel : '日志类型',
store : cityStore,
displayField : 'rName',
valueField : 'rId',
// mode : 'local',
triggerAction : 'all',
width : 400,
height:400,
emptyText : '请选择 .... '

});

cityStore.load();
var mainPanel= new Ext.Panel({
renderTo:document.body,
// border:false,
width:700,
height:700,
items:[cityCom] })
});ExtJS

解决方案 »

  1.   

    JsonReader 放到 proxy 里var cityStore = Ext.create('Ext.data.Store', {
                    model: 'City',
                    proxy: {
                         type: 'ajax',
                         url : 'role_findRoleByPage.action',
                         reader: {
                              type: 'json',
                              totalProperty:'totalCount',
                              root:'list'
                         }
                    }                
                });
      

  2.   

    add queryMode:'remote' in combobox
      

  3.   

    刚看了一下,应该是异步问题。
    combobox加载完成时,其store的load过程并未完成。用autoLoad:true 代替cityStore.load()试一下
      

  4.   


    var cityData = {"totalCount":8,"list":[{"emps":1,"roleid":1,"roleName":"超级管理员"},{"emps":1,"roleid":2,"roleName":"管理员"},{"emps":2,"roleid":3,"roleName":"普通员工"},{"emps":0,"roleid":4,"roleName":"商户"},{"emps":1,"roleid":5,"roleName":"aa"},{"emps":0,"roleid":16,"roleName":"321"},{"emps":0,"roleid":17,"roleName":"zhidan"},{"emps":0,"roleid":18,"roleName":"zhan"}]};
    //将proxy请求写出来,然后将数据请求到前台,给变量cityData
    Ext.Ajax.request({
    url:'',
    success:function(res){
    cityData = Ext.util.JSON.decode(res.responseText);
    }
    })

    //更换组件,直接去读取静态数据cityData.
    var cityStore = new Ext.data.Store({
    data:cityData,
    reader:new Ext.data.JsonReader({
     root:'list',
     fields:['roleName','roleid']
    })

    });
    var cityCom = new Ext.form.ComboBox({
    fieldLabel : '日志类型',
    store : cityStore,
    displayField : 'roleName',
    valueField : 'roleid',
    mode : 'local',           //改成local
    triggerAction : 'all',
    width : 400,
    height:400,
    emptyText : 'pls select .... '
    });
    var mainPanel= new Ext.Panel({
    renderTo:Ext.getBody(),
    // border:false,
    width:700,
    height:700,
    items:[cityCom] })