2011-06-14 183 views
1

我要动态地根据我从THR网址(也就是Servlet)填充组合框动态地ExtJS的

下面是我的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' 
} 

但我下面让错误,我的网址不会被调用:

消息:“您正在使用ServerProxy但没有一个网址提供它。”

sourceClass: “Ext.data.proxy.Server”

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

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

+0

您使用的是什么版本的ExtJs? – 2011-06-14 13:09:01

+0

@torbjorn我使用Extjs 4 – mahesh 2011-06-15 06:51:25

回答

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' 
    }); 
1

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

+0

它仍然不工作.. – mahesh 2011-06-15 06:58:34

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' 
     } 
    } 
}); 

您会在这里发现商店有一个属性“模式”,这是一个字符串,并有没有字段映射。这是因为您还需要为商店创建模型以供参考,如下所示:

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

希望这有助于您!