2011-09-01 146 views
0

Ext.form.Combobox中的哪個屬性是ComboBox中當前顯示的字段?在ext.form.combobox中更改顯示值

當用戶從JsonStore中選擇了一些內容並將該值傳遞給組合框之後,displayField將顯示在組合框的搜索字段中。我需要創建一個ComboBox,用戶從JsonStore中選擇某個對象,但與ComboBox搜索字段中顯示的內容完全無關(這不能通過更改JsonStore記錄中的任何屬性來完成),因爲字符串被搜索和最後傳遞的值不能不同)。我只需要重寫組合框中顯示的內容。

回答

0

您可以使顯示的文本不同於該值。

Ext.define('BasicStoreModel', { 
     extend: 'Ext.data.Model', 
     fields : ['valueField', 'displayField'] 
    }); 

    var myStore = new Ext.data.SimpleStore({ 
     model: 'BasicStoreModel', 
     data: [['value1','display1'], ['value2', 'display2']] 
    }); 

items: [... 
{ 
    fieldLabel: 'Label', 
    xtype: 'combo', 
    name: 'nameOfSelect', 
    editable: false, 
    store : myStore, 
    displayField: 'displayField', 
    valueField: 'valueField', 
    queryMode: 'local', 
    triggerAction: 'all', 
} 

前兩位似乎有點小題大做,但我已經結束了創建它們使用BasicStoreModel許多SimpleStore實例。你應該能夠擴展JsonStore。

+0

其實我需要做這項工作,每個記錄......在「valueField」,這是選擇記錄的值(在我的情況是數字代碼),一個「displayField」,這3個屬性匹配用戶鍵入的內容並用於搜索searchStore,以及第三個字段,該內容顯示在選擇項目後的下拉菜單和搜索框中。我可以使用tpl在下拉列表中顯示第三個字段,但在選擇某個項目後,是否還有一種方法可以在搜索字段中顯示該字段? – Sarah

+0

現在,當用戶點擊下拉菜單中顯示的內容時,搜索字段中顯示的是「displayField」屬性。如果可能,我希望顯示第三個屬性。或者,實際上只有一個下拉選擇,在選擇選項後,displayField不能顯示給用戶,因此只要覆蓋文本框中顯示的內容(不更改選定值)即可。 – Sarah

+0

有沒有辦法在搜索字段本身爲記錄設置「tpl」,就像你可以在下拉菜單中記錄一樣? – Sarah

2

你可能想要做的是

  • 有displayField是「一些完全無關的就是在組合框中搜索欄中顯示」
  • 然後,覆蓋doQuery過濾店上aThirdField (或其他)
  • 如果您將其留在此處,則在您鍵入時,下拉列表將顯示displayFields。當您從下拉列表中選擇一個項目時,displayField將顯示在搜索框(觸發字段)中。
  • 除了您要更改下拉菜單中顯示的內容外,這一切都很好。
  • 要解決此問題,請配置組合框的tpl屬性以顯示一個第三個字段或一個FourField或任何想要在下拉菜單中顯示的內容。

換句話說,該解決方案將沿行 -

  • 始終配置displayField是要在觸發後場項目選擇看場
  • 如果你不要篩選displayField,覆蓋doQuery
  • 如果你不想在下拉列表中比其他displayField顯示任何內容,配置tpl

參考 - Ext.form.ComboBox

+0

謝謝 - 太棒了!我實際上最終做了類似的事情,但是不會讓我回答我自己的帖子6個小時:/我做了一個beforeSelect函數,它將displayField分配給觸發字段的顯示值,以及一個將displayField分配給jsonstore的beforeQuery函數搜索值。 – Sarah