#javascript #extjs #combobox #filter #datastore
#javascript #extjs #combobox #Фильтр #хранилище данных
Вопрос:
У меня есть два требования для привязки EXT Js combo
— Первый элемент в списке должен содержать фиксированный текст, такой как «Unfilterd»
— После этого мне нужно привязать хранилище данных к вышеупомянутой комбинации. В хранилище данных были изменены значения столбцов, так как же отфильтровать хранилище данных, чтобы в нем были разные строки в столбце, прежде чем привязывать комбо.
Примечание:
Я также использую хранилище данных для привязки панели grid, я не хочу создавать еще один вызов к базе данных. Вот почему я ищу решение для фильтрации данных по внешнему хранилищу данных Js.
Мой пример кода выглядит следующим образом
extManager1.comboFilter = new Ext.form.ComboBox({
editable: false
, id: 'BaseTemplate'
, fieldLabel: 'Base Templates'
, name: 'BaseTemplate'
, editable: false
, store: extManager1.GetTemplateDetails
, displayField:'FilterBy'
, valueField: 'value'
, mode: 'local'
, boxLabel: 'BaseTemplate'
, typeAhead: true
, triggerAction: 'all'
, forceSelection: true
, selectOnFocus: true
, emptyText:'Unfilterd'
,listeners:{select:{fn:function(combo, value) {
//This code filters the grid panel data by selected combo value
Ext.getCmp('TemplateGridPanel').store.filter('productdisplayheading', combo.getValue());
}}
}
});
Ответ №1:
Вероятно, вам потребуется создать другой объект хранилища с нужным вам содержимым. Но нет необходимости повторно извлекать данные из базы данных — вы можете заполнить новое хранилище данными из вашего extManager1.GetTemplateDetails
хранилища. Взгляните на метод collect в ExtJS Store — его можно использовать для извлечения различных значений из существующего хранилища.
Комментарии:
1. Спасибо за ответ. Но как я могу отличить значение, отличное от предыдущего
2. Я не уверен, как использовать метод collect, не могли бы вы, пожалуйста, привести пример. Мне также нужно добавить первый элемент как ‘Unfilterd’ для комбинации, как я могу этого добиться.
3. Вы можете использовать
store.insert(0, [yourUnfilteredRecord])
для добавления «нефильтрованного» элемента в хранилище. Иstore.collect('columnA')
возвращает различные значения из столбца хранилища.