2013-01-14 3 views
3

ExtJS 3.4 ComboBox에서 선택한 displayField 값을 얻는 방법은 무엇입니까? getValue()는 valueField를 반환하지만 다른 것이 필요합니다.ExtJS Combobox에서 선택된 displayField 값을 얻는 방법

+0

좋아요, 당신의 경우에는 'valueField'가 무엇이든지간에 원하는 것을 명확히 할 수 있습니까? – sra

+0

ComboBox에는 페이지에 표시된 displayField와 스크립트에 제출 된 valueField가 있습니다. 선택한 항목의 displayField 값을 가져와야합니다. – Argnist

+0

이를 위해 쉽게 보관할 수있는 방법이 없습니다. select 이벤트에 자신을 등록 할 수는 있지만, 사용자가 클릭 할 경우에만 발생하고 setValue()를 사용하여 값을 설정하지 않은 경우에만 발생합니다. 따라서 이러한 동작을 추가하려면 콤보 클래스를 확장해야합니다. Dunno가 당신을위한 옵션이지만 다른 방법이 없다면 – sra

답변

14

combo.getValue() -> valueField
combo.getRawValue() -> displayField

6

이 경우, 다음 기능은 다음

displayField : 'countryName', 
valueField : 'countryId', 

필요한 displayFiled (심지어 1 개 이상의 필드 저장소에 있습니다 당신이 그들을 너무 얻을 수 있습니다) 얻을

function getFieldValues(combo, nameIn, nameOut){ 
    try{ 
      var r = combo.getStore().find(nameIn,combo.getValue()); 
      return combo.getStore().getAt(r).get(nameOut); 
    } 
    catch(err){ 
      return'error'; 
    } 
} 

방법을 제공합니다 디스플레이 필드 또는 상점에있는 다른 파일 :

var item = getFieldValues(Ext.getCmp('combo'), 'countryId', 'countryName'); 
0

아마도 사용자 store.filter(), 맞습니까? 그 경우, 아래와 같이 다시 클리어 필터 및 부하를 시도 : 나는 콤보 상자의 lastSelectionText 속성을 사용하고

onProvinceSelected: function (com,record,index) 
{ 
    var provinceCode = com.getValue(); 
    var postGrid = this.lookupReference('postgrid'); 
    if (provinceCode != 0) { 
     postGrid.store.filter('ProvinceCode', provinceCode); 
    } else { 
     postGrid.store.filters.clear(); 
     postGrid.getStore().load(); 
    } 
} 
0

을; 나를 위해 잘 작동하지만 문서화되지 않은 기능이므로 언제든지 중단 될 수 있습니다 ...

Ext.override(Ext.form.ComboBox, 
{ 
    getDisplayValue: function() { 
     return this.lastSelectionText; 
    } 
}); 
관련 문제