我想在工具栏上添加一个按钮,该按钮会自动将过滤器设置为活动状态,然后过滤数据。我尝试将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';
});