首页 > 解决方案 > Objectlistview 过滤器结合 CompositeAllFilter 和 CompositeAnyFilter

问题描述

我有一个 objectListView 作为树视图,我想过滤列表。问题是我有很多复选框,我需要 AND 或 OR 条件。

这是我从示例项目中获取的代码:

// Build a composite filter that unify the three possible filtering criteria

List<IModelFilter> filters = new List<IModelFilter>();

if (this.checkBoxHighPriority.Checked)
    filters.Add(
        new ModelFilter(delegate(object model) 
        { 
            return ((ServiceTask)model).Priority > 3; 
        }));

if (this.checkBoxIncomplete.Checked)
    filters.Add(
        new ModelFilter(
            delegate(object model) 
            { 
                return ((ServiceTask)model).Status != ServiceTask.TaskStatus.Complete; 
            }));

if (!String.IsNullOrEmpty(this.textBoxFilter.Text))
    filters.Add(
        new TextMatchFilter(this.olvTasks, this.textBoxFilter.Text));

olvTasks.AdditionalFilter = filters.Count == 0 ? null : new CompositeAllFilter(filters);

我可以从 更改CompositeAllFilterCompositeAnyFilter,但我想要两者的组合:

像这样的东西:

olvTasks.ModelFilter = new ModelFilter(delegate (object x)
{
    var myNode = x as Node;
    return x != null && ((myNode.Status == "0" || myNode.Status == "1" || myNode.Status == 2"|| myNode.Status == "4") && myNode.Breakdown == "True");
}

如果我只有 4-5 个组合框,这很容易,但我有 10 个组合框。

如何比较过滤器?

非常感谢

标签: filterobjectlistview

解决方案


推荐阅读