2013-07-05 75 views
2

我正在使用Extjs 4.2,並且在我的頁面上有一個組合框字段。當我更新這個頁面時,我需要在組合框中顯示選定的值。如果我使用靜態數據,它會正常工作,但是當我從數據庫加載數據時,數據即將到來,但它顯示所選組合框的值(不是標籤)。無法填充組合框標籤IN EXTJS

我已經完成了使用組合框的select方法的工作,但我需要遍歷存儲以獲取選定的值。商店值不是從1開始,而是從100開始,並且組合框的select方法使用列表的索引。

下面是您可以檢查的代碼,但這不適用於多個組合框。

var specilizationComboBox = Ext.getCmp("doctorMasterVO.specilizationFkId"); 

var specilizationValue = 0; 

specilizationStore.each(function (record) { 
    if (record.get('value') != dataRead.dataVO.doctorMasterVO.specilizationFkId) { 
     specilizationValue = specilizationValue + 1; 
    } 
    else { 
     return false; 
    } 
}); 

specilizationComboBox.select(specilizationComboBox.store.data.items[specilizationValue]); 

請告訴我,有任何其他方式可以做到這一點,因爲迭代整個商店不是一個好主意。

回答

0

查閱這些方法:

find

findBy

findRecord

findExact

Basicly你想做的事是這樣的:

var myId = dataRead.dataVO.doctorMasterVO.specilizationFkId; 
var record = store.findRecord("id", myId); 
specilizationComboBox.select(record); 

其中「id」是您試圖在商店中找到匹配的字段的名稱。 請注意,如果記錄不存在或者商店不正確,myRecord可能爲空加載

要確保專賣店加載,你可以在負載處理程序中執行上面的代碼:

specilizationComboBox.getStore().load({ 
    scope: this, 
    callback: function(records, operation, success) { 
     //code goes here 
    } 
}); 

如果你是不知道,如果商店已經加載,你可以檢查getCount方法。

+0

非常感謝您爲我工作。 – Saurabh