如何以编程方式设置列过滤器?

时间:2015-06-30 18:02:54

标签: extjs

我正在研究Ext.js 5 Web应用程序。我有一个Ext.grid.Panel,我有

selModel: {
    type: 'spreadsheet'    
  },

以下是我现在所拥有的屏幕截图:

enter image description here

我希望能够将“状态”列中的过滤器设置为“就绪”。我不确定我需要做什么。

谢谢!

更新:感谢DrakeES指出我正确的方向。我需要做的是添加此代码...

  1 /*global   */
  2 Ext.define("Requestor.view.main.RequestGrid", {
  3   extend: 'Ext.grid.Panel',     // Our base class. A grid panel.
...
 42   // Here we define our grid columns based on our associated store and model.
 43   columns: [
...
 72     {
 73       text: 'Status',
 74       dataIndex: 'status',
 75       itemId: 'status',
 76       renderer: function(value, metaData) {
 77 //RED
 78       var filter = this.up('panel').down('#status').filter;
 79       if (!filter.menu) {
 80          filter.createMenu();
 81          filter.menu
 82             .down('menuitem[value="Ready"]')
 83             .setChecked(true);
 84       }
 85 //RED
 86         metaData.tdStyle = (value == 'Ready') ?
 87           'color:green;font-weight: bold' :
 88           'color:red;font-style: italic'
 89         return(value)
 90       },
 91       filter: 'list',
 92       flex: 1,
 93     },

1 个答案:

答案 0 :(得分:1)

  1. 检索列过滤器。为方便起见,请将itemId分配给列配置:
  2. {
        dataIndex: 'status',
        text: 'Status',
        itemId: 'status',
        flex: 1,
        filter: 'list'
    }
    
    1. 如果菜单尚不存在,则启动其菜单;
    2. 检索相关的复选框菜单项并进行检查。
    3. 代码:

      var filter = grid.down('#status').filter;
      if (!filter.menu) {
          filter.createMenu();
      }
      filter.menu
          .down('menuitem[value="Ready"]')
          .setChecked(true);
      

      完整示例:https://fiddle.sencha.com/#fiddle/pn6