2015-05-20 4 views
2

У меня есть одна сетка, в которой есть один столбец для combobox. Я требую, чтобы отфильтровать значения COMBOBOX, основываясь на записи, как показано ниже:Как фильтровать хранилище в combobox editorgrid на основе значения записи?

id | name |  options 
====================================== 
1 | string | combobox(1,2,3) 
2 | string | combobox(1,2,3,4,5) 
3 | string | combobox(1,2,3) 
1 | string | combobox(1,2,3) 

Так в конечном счете, я требую стоимости вариантов, основанных на id колонки. Ниже приведена моя конфигурация столбца сетки extjs.

columns: [{ 
       header: 'id', 
       dataIndex: 'id', 
       id: 'id', 
       hidden: true 
      },{ 
       header: 'Name', 
       dataIndex: 'name', 
       id: 'name', 
       menuDisabled: true, 
       flex : 1 
      },{ 
       header: 'options', 
       dataIndex: 'options', 
       id: 'options', 
       menuDisabled: true, 
       flex : 1, 
       editor : { 
        xtype : 'combo', 
        store: optionStore, 
        valueField: 'id', 
        displayField: 'name', 
        triggerAction: 'all', 
        mode : 'local', 
        disabled: true, 
        listners: { 
         expand: this.filterFunc(this) 
        } 
       }, 
       renderer: this.columnRenderer 
      }] 

Как фильтровать хранилище без другой строки в ExtJS editorgrid.

PS - Я использую ExtJS 3.4 версии

ответ

1

Вы можете использовать рендер, он должен идти что-то вроде этого:

renderer: function(value, metaData, record, rowIndex, colIndex, store) { 
    value.store.filter([ 
     { 
      property: 'filteredProperty', 
      value: record.get('id') 
     } 
    ]); 
} 
+0

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

+0

Как выглядит этот рендерер? Не удастся ли использовать этот рендерер для фильтрации свойств? – MarthyM

+0

No @MarthyM, это немного сложно изменить рендеринга. Хотя ваше решение работает отлично, я все же отправляю свой путь решения проблемы. –

1

Я ниже колонке конфигурации со слушателями expand, какой фильтр в магазине в то время как расширение списка combobox.

{ 
    header: 'options', 
    dataIndex: 'options', 
    id: 'options', 
    menuDisabled: true, 
    flex : 1, 
    editor : { 
     xtype : 'combo', 
     store: optionStore, 
     valueField: 'id', 
     displayField: 'name', 
     triggerAction: 'all', 
     mode : 'local', 
     disabled: true, 
     listeners: { 
      expand : function(combo){ 
       var id = Ext.getCmp('grid').getSelectionModel().selection.record.data.id; 
       combo.store.filter('attributeId',attributeId); 
      } 
     } 
    }, 
    renderer: this.columnRenderer 
} 
+0

Отличное решение. Тем не менее, я использовал бы прослушиватель 'afterrender'. Если вы используете 'expand', оно может показать значение по умолчанию, которое не было в вашем отфильтрованном списке, прежде чем вы его расширите. – MarthyM

+1

Спасибо за вашу озабоченность, но такого значения не существует, поскольку я уже установил ограничения в базе данных. :) –

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

  • Нет связанных вопросов^_^