2011-06-14 187 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'} 
    ] 
}); 

希望這有助於您!