通过标签选择过滤平行网格

Filter rallygrid by tag selection

本文关键字:网格 过滤 选择 标签      更新时间:2024-03-01

我创建了一个rallygrid对象和一个ralleytagpicker对象。我想做的是过滤平行网格,使其仅包括包含任何选定标签的项目。我尝试了几种不同的方法来实现这一点,但似乎无法实现。这是我的标签选择器代码:

this.tagPicker = this.add({
    xtype: 'rallytagpicker',
    autoExpand: true,
    listeners: {
        select: this._onTagSelect,
        scope: this
    }
});

因此,我遇到的第一个问题是,当我从下拉列表中选择一个标签时,select实际上似乎并没有触发,其次,一旦它触发,我如何刷新网格上的过滤器以包括带有这个新标签的项目?

现在,我使用如下过滤器对象进行过滤:

{ property: 'Tags.Name', operator: 'contains', value: 'My Tag' }

如果我能将所有要过滤的标签存储在一个数组中,并一次传递整个数组,而不是为每个标签都有一个单独的过滤器对象,那就太好了。这可能吗?

如果使用更改事件会怎样?

要构建过滤器,你只需要为每个标签将它们组合在一起:

Rally.data.QueryFilter.or([
    {
        property: 'Tags.Name',
        operator: '='
        value: 'My Tag'
    },
    {
        property: 'Tags.Name',
        operator: '='
        value: 'My Tag2'
    },
]);

然后要刷新网格,你可以使用它的刷新方法,通过新的过滤器:

grid.refresh({
    filters: [
        //filters here
    ]
});