2011-09-20 27 views
7

我在窗口 - >窗體 - >組合框中使用組合框,使用form.loadRecord(記錄)從網格綁定數據到組合框。Extjs 4組合框第一次沒有加載(組合框設置了表單數據後)

我的問題是:

結合數據後,我是觸發連擊改變組合數據,首次組合擴大一點,之後第二次點擊自動隱藏僅組合項目加載正確。

{ 
    xtype: 'combobox', 
    editable: false, 
    id: 'USERTYPECmbo', 
    queryMode: 'remote', 
    displayField: 'USERTYPE', 
    store: Ext.create('Ext.data.Store', { 
     autoLoad: true, 
     fields: ['USERTYPE'], 
     proxy: { 
      type: 'ajax', 
      extraParams: { 
       typeName: 'USERTYPE' 
      }, 
      url: 'USERTYPE.htm', 
      reader: { 
       type: 'json', 
       root: 'res' 
      } 
     }, 
     listeners: { 
      load: function (store, options) { 
       var combo = Ext.getCmp('USERTYPECmbo'); 
       combo.setValue(combo.getValue()); //Set the remote combo after the store loads. 
      } 
     } 
    }), 
    name: 'USERTYPE', 
    fieldLabel: 'USER TYPE' 
} 

指向我哪裏出錯或任何屬性需要添加組件。

回答

4

這是因爲valueField不是在你的配置對象定義(而displayField設置)。當extjs嘗試加載你的組合時,他需要value和display字段來正確顯示你的組合,但是在渲染時,你的valueField尚未設置,並且他正在等待發送到服務器的ajax請求,並且響應被髮回。

在您的監聽器中,您正在設置組合值,但尚未呈現組合。因此,當您第二次單擊組合框時,恰恰在加載遠程JSON後,將設置組合框。

{ 
    xtype : 'combobox', 
    editable : false, 
    id:'USERTYPECmbo', 
    queryMode: 'remote', 
    displayField: 'USERTYPE', 
    valueField: 'USERTYPE',//set whatever field you like in your json       
    store :new Ext.data.Store({ 
     autoLoad: true, 
     fields: [ 'USERTYPE' ], 
     proxy: { 
      type: 'ajax', 
      extraParams: {typeName : 'USERTYPE'}, 
      url : 'USERTYPE.htm', 
      reader: { 
       type: 'json', 
       root : 'res' 
      } 
     }      
    }), 
    name : 'USERTYPE', 
    fieldLabel: 'USER TYPE' 
} 

更新: 一個問題我沒有注意到的是,您創建使用Ext.create正因爲如此,ExtJS的會盡量讓你的JSON兩次商店(只檢查其使用螢火蟲),而一個請求就足夠了。只需使用new而不是Ext.create.I在我的本地服務器上測試了你的代碼,並且它的工作正常。如果你仍然有同樣的問題,請提供一個下載鏈接到你的表單js + html + Store,所以我您可以下載我的測試文件建立在您的代碼和工作從here。測試FF 6和歌劇10和IE9

+0

喜drfanai,感謝您的回覆,我加入valueField也加入延遲任務如.. VAR任務=新Ext.util.DelayedTask(函數(){view.down ( '形式')loadRecord(記錄);}); task.delay(20000); ..完成表單渲染和存儲加載..即使雖然IAM得到相同的問題 – vineth

+0

@ drfanai如果可能的話提供樣本表單綁定組合(遠程)數據示例或任何相關的鏈接。因爲我不知道如何驗證ALL組合商店被加載到表單中 – vineth

+0

已更新我的answer.hope它幫助。請檢查此URL以獲得遠程商店的良好教程http://www.quizzpot.com/2009/10/combo-box-loaded-dynamically-and-遠程/ –

6

嘗試添加

queryMode: 'local' 

你的組合框屬性

+0

最佳解決方案! – Stevanicus