2011-02-02 82 views
2

在ext js中,當我有一個組合時,顯示值和值(它被髮送到服務器)。我不需要displayValue發送到服務器,但我需要在頁面上捕獲它並顯示警報。 這樣做的eextjs方法是什麼? combo.getValue()將返回潛在價值......我沒有看到任何combo.getDisplay()extjs組合顯示值

編輯:只是爲了澄清,我希望得到一個由用戶選擇的項目的顯示值。我希望在onselect或changeevent上顯示提醒。

回答

5

如果您設置組合框您希望在該做工精細警報顯示值valueField屬性。

alert(combo.getValue()); 

如果你想要這個值是從你提交到服務器的值不同,你將獲得從組合框中商店,並找到相應的記錄。

var store = combo.getStore(); 
var index = store.find('*YourFieldName*', combo.getValue()); 
if(index != -1)//the record has been found 
    { 
     var record = store.getAt(index); 
     //you can then do what you like with the record. 
    } 
+0

+1但你並不真正需要的 「如果」條件。 (如果你能想到一個你需要的情況,我想知道!) – 2011-02-02 17:42:27

0

我們可以檢索底層商店,然後使用我們的值作爲鍵來獲得顯示值。

像這樣的東西(我沒有測試過):

var displayValue = combo.getStore()[combo.getValue()] 
0

我們可以得到組合框顯示值這樣的事情...

getRawValue():字符串 返回組合的原始字符串值,而沒有進行任何正常化,轉換或驗證。獲取輸入元素的當前值,如果該字段已被渲染,則忽略該值(如果它是空文本)。

combo.getRawValue();

1
combo.getStore().getById(combo.getValue()).raw.displayAttribute //Ext 4.x, 
//displayAttribute: displayField or displayed attrib in store data for the combo 
0

讓我們假設你在你的組合框有如下:

 
id: 'COMBOBOX_ID', 
displayField: 'COMBOBOX_DIS_FIELD_NAME', 
valueField: 'COMBOBOX_VAL_FIELD_NAME' 

然後,你可以做到以下幾點:

var combo = Ext.getCmp('COMBOBOX_ID'); 
var comboStore = combo.getStore(); 
var index = comboStore.find('COMBOBOX_VAL_FIELD_NAME', combo.getValue()); 
if(index != -1) 
{ 
    var selectedItemDisplayValue = combo.getStore().getAt(index).get('COMBOBOX_DIS_FIELD_NAME'); 
}