首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ag-grid自定义过滤器添加了一个清除过滤器按钮。JS不是Angular

ag-grid自定义过滤器添加了一个清除过滤器按钮。JS不是Angular
EN

Stack Overflow用户
提问于 2018-11-09 17:54:13
回答 1查看 1.3K关注 0票数 1

使用ag-grid站点上的示例,我已经编写了一个基于RAG状态的过滤器。vaules可以是未定义的、红色、琥珀色、绿色或完整。

https://www.ag-grid.com/javascript-grid-filter-component/的PersonFilter示例中,我使用了一个数组来添加单击值,然后过滤网格。这真的很好用。但是,我的目的是通过清除按钮清除过滤器。

以下是我到目前为止拥有的代码:

代码语言:javascript
复制
RagFilter.prototype.setupGui = function (params) {

            this.filterText = [];
            this.gui = document.createElement('div');
            this.gui.innerHTML =
                '<div style="padding: 6px; width: 150px;">' +
                    '<div><h3>RAG Filter</h3></div>' +
                    '<div><span class="icon icon-rag-s-undefined" data-value="undefined"></span>&nbsp;' +
                        '<span class="icon icon-rag-s-red" data-value="red"></span>&nbsp;' +
                        '<span class="icon icon-rag-s-yellow" data-value="yellow"></span>&nbsp;' +
                        '<span class="icon icon-rag-s-green" data-value="green"></span>&nbsp;' +
                        '<span class="icon icon-rag-s-blue" data-value="blue"></span>' +
                        '<a href="#" id="clear_filter" class="btn btn-primary btn-sm" data-filter="rag">CLEAR</a>';

            var that = this;
            $('body').on('click', '.icon',  function(e){
                if (that.filterText.indexOf($(e.target).data('value'))) {
                    that.filterText.push($(e.target).data('value'));
                }
                params.filterChangedCallback();
            });
            $('body').on('click', '#clear_filter',  function(e){
                e.preventDefault();
                var filter = $(this).data('filter');
                var filterComponent = params.api.getFilterInstance(filter);
                filterComponent.setModel(null);
                this.filterText = null;

            });
        };

此方法取自https://www.ag-grid.com/javascript-grid-filter-component/中使用PersonFilter的示例。

我也尝试过在过滤器代码之外的按钮的click事件处理程序:

代码语言:javascript
复制
$('body').on('click', '#clear_filter',  function(e){
                e.preventDefault();
                var filter = $(this).data('filter');
                var filterComponent = gridOptions.api.getFilterInstance(filter);
                filterComponent.setModel(null);
            });

对于变量filterComponent,我总是得到一个未定义的错误。变量filter被设置为'rag‘,它来自clear按钮上的data-filter属性。

我一直在这样做,但似乎找不到一个清晰的教程或代码示例来实现我想要的目标。

非常感谢大家的帮助。

干杯

EN

回答 1

Stack Overflow用户

发布于 2018-11-09 20:40:27

在对代码进行了大量修改之后,我发现您实际上需要的是colDef.colId值,而不是文档中建议的字段名称:

代码语言:javascript
复制
$('body').on('click', '#clear_filter',  function(e){
                e.preventDefault();
                var filterComponent = params.api.getFilterInstance(params.colDef.colId);
                that.filterText = null;
                params.api.onFilterChanged();
            });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53223450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档