Kendo网格过滤器 - 如何使用“OR”过滤器

时间:2017-02-07 04:10:22

标签: javascript kendo-ui kendo-grid

我的任务是为Kendo网格创建一个OR过滤器(由另一个开发团队实现,后者已经离开)。基本上,我们有身份证号码。我们可以使用代码(下面)来过滤单个记录或“包含”等等(所有标准选项)。

然而,我们想要的是一个过滤器,用户可以粘贴一串ID号码(如123,456,789之类的东西等 - 可能是数百个),过滤器会把它们搞定。

目前我们的过滤器代码是:

{ field: "id", title: "ID Number",
                                filterable: {
                                    cell: {
                                        template: function (args) {
                                            args.element.kendoNumericTextBox({
                                                format: "#",
                                                decimals: 0,
                                                spinners: false
                                            });
                                        }
                                    }
                                }
                            },

1 个答案:

答案 0 :(得分:0)

使用我自己的过滤器对它进行排序,这个过滤器非常复杂并且在很多不同的地方。但是,如果有人发现它有用......

以下是我的js文件:

    self.init = function () {
        var FilterToUse = new String($("#MyFilter").val());
        self.filterIDs = FilterToUse !== "" ? FilterToUse.split(" ").map(Number) : [];
    }

    self.filterMyFilter = function () {
        return new RSVP.Promise(function (resolve, reject) {
            var promises = [];
            promises.push(self.init());
            RSVP.all(promises)
                .then(function (posts) {
                    var selectedIdsToFilter = self.filterIDs.join(",");
                    $("#MyGrid").data("kendoGrid").dataSource.read({ SelectedIds: selectedIdsToFilter });
                });
        });
    };

先前定义了self.filterID:

self.filterIDs = [];

MyGrid是我的网格,MyFilter是一个输入框,我可以在其中粘贴我的ID(123 456 789等)。

然后我们使用该模块,并确保将其添加到创建该网格的代码中:

string selectedIds = Request.Form["SelectedIds"];  // SelectedIds comes from paste IDs
List<long> selectedIdList = string.IsNullOrWhiteSpace(selectedIds) == false ? selectedIds.Split(',').Select(long.Parse).ToList() : null;

而且,我们可以过滤它......

if (selectedIdList != null)
{
    where = where.And(w => selectedIdList.Contains(w.Id));
}