2015-05-27 5 views
2

У меня есть сетка свойств с несколькими списками, и я хочу отфильтровать значения в одном поле на основе того, что выбрано в предыдущем поле.ExtJS фильтр ComboBox динамически

Мой код выглядит следующим образом:

var tempPropGrid = me.getView().add(
    { 
     xtype:'propertygrid', 
     width: 80, 
     header: false, 
     title: 'prop grid', 
     //for some reason the headers are not hiding, we may need to deal with this using CSS 
     //hideHeaders: true, 
     enableColumnResize: false, 
     sortableColumns: false, 
     nameColumnWidth: 1, 
     source: record.data, 
     sourceConfig: { 
      teamName: { 
       editor: Ext.create('Ext.form.ComboBox', { 
        store: teams, 
        queryMode: 'local', 
        displayField: 'teamName', 
        valueField: 'teamName' 
       }), 
       displayName: 'Team' 
      }, 
      leadDev : { 
       editor: Ext.create('Ext.form.ComboBox', { 
        store: teamMembers.filter('teamName', teamName.value), // this probably won't work but you get the idea 
        queryMode: 'local', 
        displayField: 'personName', 
        valueField: 'personName' 
       }), 
       displayName: 'Lead Dev' 
      }, 

и мой объект JSON выглядит следующим образом:

{ 
        "periodName": "Week1", 
        "teamName": "tango", 
        "roleName": "SWE III", 
        "roleExperience": "3", 
        "id": "21ea7f61-a9a5-4dbd-b405-e7a0449f8096" 
       }, 

Поэтому в основном я назначая проект команды, а затем, на основании которых команда I выберите Я хочу выбрать leadDev, исходя из того, что они находятся в этой команде.

Я не уверен, как выщипывать значение поля со списком и применять фильтр динамически, поэтому любая помощь будет отличной.

ответ

0

Каждая строка в сетке является моделью. Итак, в сводке leadDev вам просто нужно прослушать событие 'expand', затем получить текущую модель строки и применить значение этой модели к фильтру. Он должен выглядеть следующим образом (не проверено):

Ext.create('Ext.form.ComboBox', { 
       store: store 
       queryMode: 'local', 
       displayField: 'personName', 
       valueField: 'personName', 
       listeners: { 
        'expand' : function(combo) { 
         var grid = combo.up('grid'); 
         var selection = grid.getSelectionModel().getSelection(); 
         var currentRowModel = //get this from selection 
         combo.getStore().clearFilter(true); 
         combo.getStore().filter('teamName',currentRowModel.teamName); 
        } 
       } 
      }) 

И вам необходимо обновить текущую модель, когда пользователь выбирает значение из первого выпадающего списка

+0

Постараюсь это, спасибо! – Benirving92

Смежные вопросы