2010-09-23 38 views
3

我想我有一個非常流行的問題,但現在沒有找到答案。 :) 我得到了2個類似的組合框 - 首先我通過id - comboT.setValue("22763");設置我的值,並正確設置了與此ID鏈接的文本值。 在第二個組合框我第一次重新加載存儲(jsonstore),然後設置值 - comboC.setValue("3");但這個組合設置只有ID不是文本值(如果我打開列表我可以看到什麼組合正確標記的文本值。選擇)文本值的組合。 正確顯示,如何解決這個問題呢? 感謝。ExtJS:重新加載存儲後的Combobox不設置值

回答

11

這樣的事情,語法可能稍有偏差,因爲我從內存中這樣做:

var val = 3; 
var store = comboC.getStore(); 
store.on("load", function() { 
    comboC.setValue(val); 
}): 
store.load(); 
+0

哇。有用! ammoQ告訴我爲什麼。非常感謝你們! – 2010-09-23 19:40:27

+0

非常好的主意非常感謝 – Ramanavel 2011-12-13 07:05:01

6

載入店是異步的,你可能要移動到設定的新值的store.load({...})callback:事件處理程序,否則,你設置實際加載之前的值

編輯:爲了完整性,一個例子,所以你有一個替代版本(在某些ca SES它可能是不需要的回調到店裏把自己綁定,就像ormuriauga一樣):

var val = 3; 
var store = comboC.getStore(); 
store.load({ 
    callback: function() { 
     comboC.setValue(val); 
    } 
}); 
+0

非常感謝你。我現在瞭解:) – 2010-09-23 19:39:41

2

通過搜索底層數據存儲中的字符串來設置組合框的值的另一個示例。我能夠在這些答案爲基準使用樣本實現代碼:

//The store's data definition must have at least a data.id field defined  
set_combobox_value_from_store = function (combobox, valueField, value) { 
//Get a reference to the combobox's underlying store 
var store = combobox.getStore(); 
store.load({ 
    callback: function() { 
     //Find item index in store 
     var index = store.find(valueField, value, false); 
     if (index < 0) return; 
     //Get model data id 
     var dataId = store.getAt(index).data.Id; 
     //Set combobox value and fire OnSelect event 
     combobox.setValueAndFireSelect(dataId); 
    } 
}); 
1

在ExtJS的4.1看起來像combo.setValue()時valueField的示範類型是「字符串」的作品。這是我的代碼

Ext.define('Model.CboObras', { 
       extend: 'Ext.data.Model', 
       idProperty: 'co_obra', 
       fields: [{ 
        name: 'co_obra', 
        type: 'int' 
       }, { 
        name: 'nb_obra', 
        type: 'string' 
       }] 
      }); 

這是行不通的。

當我改變了我的代碼如下:

Ext.define('Model.CboObras', { 
     extend: 'Ext.data.Model', 
     idProperty: 'co_obra', 
     fields: [{ 
     name: 'co_obra', 
      type: 'string' 
      }, { 
      name: 'nb_obra', 
      type: 'string' 
     }] 
    }); 

後,我用這個:

var store = comboC.getStore(); 
    store.load({ 
    callback: function() { 
     comboC.setValue(val); 
    } 
}); 

現在就像一個魅力!

相關問題