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

时间:2017-07-28 18:25:34

标签: javascript jquery xml extjs extjs4.1

我想在工具栏中添加一个按钮,自动将过滤器设置为活动状态,然后过滤数据。我已尝试对setActive()使用Ext 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 个答案:

答案 0 :(得分: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';
});