ExtJs:在组合框中搜索/过滤

标签 extjs combobox filter

我在 ExtJs 2.3 中有以下问题/问题:

我想在组合框中进行搜索。
我给你举个例子:

Ext.comboData.names = [['Peter', 'Paul', 'Amanda']];

var store = new Ext.data.SimpleStore({
     fields: ['name'],
     data: Ext.comboData.names
});


var combo = new Ext.form.ComboBox({
     name: '...',
     id: '...',
     store: store,
     displayField: 'name',
     typeAhead: true,
     mode: 'local',
     forceSelection: false,
     triggerAction: 'all',
     emptyText: '-',
     selectOnFocus: true,
     applyTo: '...',
     hiddenName: '...', 
     valueField: 'name'
     enableKeyEvents: true,
     lastQuery: '',
     listeners: {
         'keyup': function() {
               this.store.filter('name', this.getRawValue(), true, false);
         }
     }
});

当我输入“a”时,“下拉列表”中应该只有“Paul”和“Amanda”。因此,换句话说,我正在寻找一种解决方案,不仅可以通过条目的第一个字母来过滤数据,还可以使用正则表达式 (?) 之类的东西来过滤数据(例如在 SQL ... LIKE '%a%' 中) ...我还需要为我的组合框设置“onKeyDown”事件类型,以便过滤我添加的每个字母的结果。
我怎样才能做到这一点?有任何想法吗?

提前很多坦克:)

希尔迪

PS:不幸的是,我必须使用我当前版本的 ExtJs (2.3),所以如果在以后的版本中有解决我的问题的方法,我将不得不寻找其他方式......

最佳答案

anyMatch: true是你所需要的全部。 (就像在 SQL 中 ... LIKE '%a%')正如你所问的,只需添加这个就可以完成。

示例:

Ext.create('Ext.form.ComboBox', {
  name: 'name',
  anyMatch: true,
  allowBlank: true,
  editable : true,
  typeAhead: true,
  transform: 'stateSelect',
  forceSelection: true,
  queryMode: 'local',
  displayField: 'name',
  valueField: 'id',
  selectOnFocus: true,
  triggerAction: 'all',
  store: {
    fields: ['id', 'name'],
    proxy: {
      type: 'ajax',
      url: '/user'
    },
    autoLoad: true,
    autoSync: true
  }
})

关于ExtJs:在组合框中搜索/过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5511223/

相关文章:

c# - 从结构数组填充组合框

C++ 过滤文本文件中的内容

extjs - Ext JS 网格面板事件

javascript - 使用通用文件导入ExtJS lib

php - MySQL位数据类型php打印unicode怎么来的?

c# - ComboBox 返回 System.Data.DataRowView

java - 如何通过 Combobox 的 selectedItem 操作对象

javascript - java中如何获取header的值

powershell - 具有两个 “-Filter”条件的Powershell奇怪结果

javascript - 从 Rally getSettingsFields 获取数据 - checkboxfield