因此,我试图以编程方式将ModelFilter添加到我的ObjectListView中,这将分别查看两个(或多个)列和过滤器。目前,我认为ObjectListView只支持一个过滤器,但我可能在代码/文档中缺少一些东西。如何过滤ObjectListView中的多个子项目
举例来说,我的一个预期过滤器是查看“活动”列,并且其值为“A”或“T”。另一列是主管名称。所以,我想查找Supervisor name =“Smith”和Active =“A”的所有条目。
我可以使用TextMatchFilter单独使用这两个选项中的任何一个,但无法弄清楚如何让两者同时工作。
我看到的小问题是,如果主管名称包含“A”,则使用标准过滤器将返回整行。我已经能够通过编程设置列的Searchable属性为false来解决这个问题,如果我不想查看它们,那么一旦列表被过滤,就将它们重新打开。不过,我有一种感觉,如果我将Supervisor列的搜索功能打开,我会得到不想要的结果。
有谁知道一种方法让过滤器在多列上工作,每个过滤器只使用指定的列? (我没有示例代码可以帮助解决这个问题,但是如果你真的想看看我的过滤代码,我很乐意补充,但是在VB中)。
当前代码 - 它查看用户选择的值(searchMeth)并启用在该列上的搜索。然后它搜索txtSearch框中输入的内容。不过,除此之外,我想为Supervisor添加一个额外的过滤器。 (见AndAlso评论
olvEmps.UseFiltering = True
OlvColumn1.Searchable = False
OlvColumn2.Searchable = False
OlvColumn4.Searchable = False
OlvColumn3.Searchable = False
OlvColumn5.Searchable = False
Select Case searchMeth
Case "Name"
OlvColumn1.Searchable = True
Case "Employee Number"
OlvColumn2.Searchable = True
Case "Department"
OlvColumn3.Searchable = True
End Select
olvEmps.OwnerDraw = True
Dim tFilter As BrightIdeasSoftware.TextMatchFilter = BrightIdeasSoftware.TextMatchFilter.Contains(olvEmps, txtSearch.Text)
'andalso olvColumn5 = supeName?
olvEmps.ModelFilter = tFilter
olvEmps.DefaultRenderer = New BrightIdeasSoftware.HighlightTextRenderer(tFilter)
OlvColumn1.Searchable = True
OlvColumn2.Searchable = True
OlvColumn3.Searchable = True
OlvColumn4.Searchable = True
OlvColumn5.Searchable = True
是否添加您的过滤代码,以便它可以更容易地帮助。 =)无论是VB还是C#,只要您用良好的语言标签标记您的问题,这样回答者就能够以所需的语言为您提供帮助,无论它是VB还是C#。 =) – 2012-03-22 03:30:44
已添加代码并更改了标签。谢谢@Will – APrough 2012-03-22 12:35:37
我会看看我的代码示例可以做什么。我希望它会有帮助! =) – 2012-03-22 16:52:10