使用子字符串搜索进行ng-grid列级别过滤

时间:2014-08-18 19:12:25

标签: ng-grid

我看过这个傻瓜。

http://plnkr.co/edit/WJzTr8AR8dhWIjXELNY1?p=preview

它会过滤掉第一个字符。有没有人试图基于子字符串搜索执行此过滤。如果是这样,请告诉我

我正在修改过滤器文本,如图所示

angular.forEach(filterBarPlugin.scope.columns, function(col) {
                if (col.visible && col.filterText) {
                    var filterText = (col.filterText.indexOf('*') == 0 ? col.filterText.replace('*', '') : col.filterText + "^") + ";";
                    searchQuery += col.displayName + ": " + filterText;
                }
            });

2 个答案:

答案 0 :(得分:2)

原始的plunkr是从头开始设计过滤的。如果您从子字符串进行过滤,则可以尝试*开始过滤器文本框。

如果您不喜欢,可以修改filterBarPlugin功能:

var filterText = (col.filterText.indexOf('*') == 0 ? col.filterText.replace('*', '') : "^" + col.filterText) + ";";
searchQuery += col.displayName + ": " + filterText;

var filterText = col.filterText +'; ';
searchQuery += col.displayName + ": " + filterText;

Example

更新:已修复不允许多列排序,谢谢 @mainguy

答案 1 :(得分:1)

这不是一个真正的答案,而是对 @allyusd 的答案的更新。

他基本上是正确的,但他的无心式解决方案不允许进行多列排序,因为缺少分号。

这些小改动:

angular.forEach(filterBarPlugin.scope.columns, function(col) {
            if (col.visible && col.filterText) {
                var filterText = col.filterText +'; ';
                searchQuery += col.displayName + ": " + filterText;
            }
        });

您可以在此plunk中过滤name=or AND age=4,然后您将获得 Enors

正如我所说:只是一个更新,感谢allyusd!