Extjs 4.1.3 按钮,用于设置活动过滤器



我想在工具栏上添加一个按钮,该按钮会自动将过滤器设置为活动状态,然后过滤数据。我尝试将setActive()函数用于Ext 4.1.3但该功能未被识别。

小提琴

法典

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']
}
}
...

在查找的位置找不到 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';
});

最新更新