2017-07-28 6 views
0

ボタンを追加すると、自動的にフィルタがアクティブに設定され、その後データがフィルタリングされます。 Ext 4.1.3setActive()機能を使用しようとしましたが、その機能が認識されません。Extjs 4.1.3アクティブなフィルタを設定するボタン

fiddle

コード

var openButton = Ext.create('Ext.Button', { 
      text: 'Open Topics', 
      handler: function() { 
       grid[uniqueId].filters.setActive('Open/Current'); 
      } 
     }); 

... 
var columns = [{ 
    text: 'Status', 
    width: 100, 
    dataIndex: 'TopicStateValue', 
    filter: { 
     type: 'list', 
     options: ['Open/Current', 'Archived/Closed', 'Hold'] 
    } 
} 
... 

答えて

1

のsetActive方法は、あなたがそれを見た場所で見つけることができません。 フィルタのリストでsetActiveを実行しようとしていますが、実際の関数は特定のフィルタオブジェクトを見つけたら実行することができます。

var filter = grid[uniqueId].filters.getFilter('TopicStateValue'); 
filter.setActive(true); 

しかし、フィルタをアクティブにすると、あなた何をしていません:あなたはこのように第一のフィルタになるだろう、あなたのコード例で

は(あなたがそこに問題の列をスキップとしてフィドルは役に立ちません)それができると期待します。これは、フィルターバーのフィルターUI要素を有効にするだけです。実行するに は、あなたがそのフィルタの値を設定する必要があり、それを有効にした後、自動的にフィルタを言った:

filter.setValue('Open/Current'); 

あなたは、フィルタバーを使用していないかのユーザに、この特定のフィルタドロップダウンを表示したくない場合

var store = grid[uniqueId].getStore(); 
store.filterBy(function(item) { 
    return item.TopicStateValue == 'Open/Current'; 
}); 
+1

はまた、「あなたが避難所ならば 'グリッド[一意ID] .filters.getFilter(「TopicStateValue」)は'だけ4.2.2+ ExtJSの上で動作することに値する注意:すべて、あなたは直接店舗をフィルタリング方がいいでしょう[カラム]メニューを使用する前にアクティブ化してください。 –

+0

ああ、ExtJSのドキュメンテーションが、後のバージョンで修正された問題についてのそのような発言を実際に含んでいれば、どれくらい素晴らしいだろうか。 – Mastacheata

+1

5からは、すべてのバグ修正などを示すリリースノートにアクセスできます。 http://docs.sencha.com/extjs/5.1.1/guides/whats_new/release_notes.html –

関連する問題