2014-09-12 3 views
1

У меня есть форма ExtJS 4.2.1 с combobox.Extjs 4 как установить значение combobox без загрузки магазина

xtype: 'container', 
    width: 360, 
    items: [{ 
     xtype: 'combobox', 
     fieldLabel: 'Shift Code', 
     name: 'ShiftCode', 
     store: Ext.create('SoftHuman.store.catalog.ShiftCode'), 
     blankText: ' ', 
     allowBlank: false, 
     displayField: 'Description', 
     valueField: 'ShiftCode' 
    }] 

Комбо при нажатии на иконку запуска Он будет получать данные из хранилища, а затем показать детали, как показано на следующем рисунке.

enter image description here

То, что я хочу сделать, это установить значение и отображаемое значение в комбо, когда я загружаю свою форму, а затем, если пользователь нажимает кнопку, чтобы расширить комбо магазин будет получить детали remotly как он делает прямо сейчас.

Это потому, что у меня есть эта форма с 25 комбо, и я не хочу загружать их все до того, как я покажу форму, а затем назначу каждое значение комбо, потому что пользователь не изменит все значения комбо, возможно он просто изменит 2 или 3, поэтому не имеет смысла загружать их все изначально, но я хочу показать отображаемое значение в комбо из моей записи.

Любые подсказки?

ответ

1

Что вам не хватает является queryMode: 'удаленный':

С Сенча Docs

В queryMode: 'удаленный', то ComboBox загружает его магазин динамически на основании взаимодействия с пользователем.

Обычно это используется для ввода типа «автозаполнение», и после того, как пользователь закончит печатать, Store загружается.

Параметр, содержащий введенную строку, отправляется в запросе на загрузку. Имя параметра по умолчанию для входной строки - это запрос, но это можно настроить с помощью конфигурации queryParam.

В queryMode: «удаленный», Store может быть настроен с помощью remoteFilter: true и дополнительные фильтры могут быть программно добавлены в Store, которые затем передаются с каждым запросом на загрузку, что позволяет серверу дополнительно уточнять возвращаемый набор данных.

Вы также можете использовать queryDelay, если хотите. Вот пример, который я извлек из своего кода.

{ 
        xtype: 'combo', 
        itemId: 'totalSearchCombo', 
        width: 200, 
        emptyText: 'Total Search', 
        typeAhead: true, 
        editable: true, 
        hideLabel: true, 
        hideTrigger: true, 
        store: 'dropDownList_s', 
        mode:'remote', 
        displayField: 'display_nm', 
        anchor: '100%', 
        matchFieldWidth: false, 
        listConfig: 
         { 
          width: 195, 
          loadingText: 'Searching...', 
          emptyText: 'No matching items found, or not enough characters entered.', 
          getInnerTpl: function() { 
           var tpl = '<div>{display_nm}</div>'; 
           return tpl; 
          } 
         }, 
        //pageSize: 15, 
        listeners: { 

        } 


       } 
+0

В ExtJS 6, 'mode' конфигурации переименовывается в' queryMode'. –

0

Решение было установить следующие методы:

combo.setValue('here the value'); 
combo.setRawValue('here the value to display'); 
+0

Зачем копировать ответ Пратика и создавать свои собственные, а не просто повышать его? – fivedogit

1
combo.setValue('here the value'); 
combo.setRawValue('here the value to display'); 

Вы можете установить значение по выше способов, как Вааа уже сказал об этом.

Далее вы можете вставить значение по умолчанию в хранилище и установите ему значение

combo.getStore().insert(0, { "valueField": 0, "DisplayField": "All Properties" }, true); 
combo.setValue(0); 
Смежные вопросы