在ExtJs中动态填充组合框

时间:2011-06-14 08:07:59

标签: servlets extjs extjs4

我想根据从thr Url(即servlet)收到的数据动态填充组合框

以下是我的ExtJS代码:

{ 
    xtype:'combo', 
    id: 'shoutoutsTags',
    fieldLabel: 'Tag',
    value: '',
    mode: 'local',
    width: 200,
    store: new Ext.data.JsonStore({
        id:'ms',                                   
        url:'http://localhost:8080/ezdi/extServlet',
        //totalProperty:'totalCount',
        root:'rows',
        fields:[
          {name:'un'},
          {name:'pwd'}
        ], 
        autoLoad:true      
    }),
    displayField: 'un',
    valueField: 'pwd',
    typeAhead:true,
    minChars:1,
    forceSelection: true,
    triggerAction: 'all',
    hideTrigger:true
    //hiddenName: 'mytag'
}

但我收到以下错误而我的网址未被调用:

  

msg:“您使用的是ServerProxy但尚未提供网址。”

     

sourceClass:“Ext.data.proxy.Server”

     

sourceMethod:“buildUrl”未捕获异常:您正在使用ServerProxy   但没有提供它   网址。

建议我如何克服这个错误。

3 个答案:

答案 0 :(得分:3)

您的商店需要更新才能使用新的Ext JS 4数据模型:

var store = Ext.create('Ext.data.Store', {
    model: 'MyNamespace.StoreModel',
    proxy: {
        type: 'ajax',
        url: 'http://localhost:8080/ezdi/extServlet',
        reader: {
            type: 'json',
            root: 'rows',
            totalProperty: 'totalCount'
        }
    }
});

你会在这里注意到商店有一个属性'model',它是一个字符串,并且没有字段映射。这是因为您还需要为要引用的商店创建模型,如下所示:

Ext.define('MyNamespace.StoreModel', {
    extend: 'Ext.data.Model',
    fields: [
        {name:'un'},          
        {name:'pwd'}
    ]
});

希望这有帮助!

答案 1 :(得分:3)

 Ext.define("modelname", {
    extend: 'Ext.data.Model',
    proxy: {
        type: 'ajax',
        url : '/myServlet',
        method:'POST',
        reader: {
            type: 'json',
            root: 'rows'
            //,totalProperty: 'totalCount'
        }
    },

    fields: [
        {name: 'name', mapping: 'name'}
    ]
});

   var ds = Ext.create('Ext.data.Store', {
       pageSize: 10,
       model: 'modelName'
   });

答案 2 :(得分:1)

这不是一个有效的网址,你只需要'/ ezdi / extServlet'。