Изменить отображаемое значение в ext.form.combobox - PullRequest
0 голосов
/ 01 сентября 2011

Какое свойство в Ext.form.Combobox - это поле, отображаемое в данный момент в ComboBox?

После того, как пользователь выберет что-то из JsonStore и значение будет передано в комбинированный список, displayField - это то, что отображается в поле поиска ComboBox.Мне нужно создать ComboBox, где пользователь выбирает определенный объект из JsonStore, но что-то совершенно не связанное - это то, что отображается в поле поиска ComboBox (этого нельзя сделать, изменив любое из свойств в записи JsonStore, потому что строка, котораявыполняется поиск и значение, которое передается в конце, не может быть другим).Мне просто нужно переопределить то, что отображается в выпадающем списке.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

То, что вы можете сделать, это

  • Пусть displayField будет "что-то совершенно не связанное с тем, что отображается в поле поиска ComboBox"
  • Тогдапереопределите doQuery , чтобы отфильтровать хранилище по aThirdField (или какому-либо другому)
  • Если вы оставите это в этом, раскрывающийся список будет отображать displayFields при вводе.Когда вы выбираете один элемент из раскрывающегося списка, displayField будет отображаться в поле поиска (поле триггера).
  • Это все хорошо, за исключением того, что вы хотите изменить то, что отображается в раскрывающемся списке.
  • Чтобы исправить это, настройте свойство tpl в выпадающем списке, чтобы оно отображало aThirdField или aFourthField или все, что вы хотите отобразить в раскрывающемся списке.

Другими словами, решение будет следующим: -

  • Всегда настраивайте displayField как поле, которое вы хотите видеть в поле триггера после выбора элемента
  • Если вы не хотите фильтровать на displayField, переопределите doQuery
  • Если вы не хотите отображать в раскрывающемся списке что-либо, кроме displayField, настройте tpl

Reference - Ext.form.ComboBox

0 голосов
/ 01 сентября 2011

Вы можете сделать отображаемый текст отличным от значения.

    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',
}

Первые два бита могут показаться излишними, но я создал множество экземпляров SimpleStore, которые используют BasicStoreModel. Вы должны быть в состоянии расширить JsonStore.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...