首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSLA FilteredBindingList -部分匹配

CSLA FilteredBindingList -部分匹配
EN

Stack Overflow用户
提问于 2015-08-25 12:02:58
回答 1查看 179关注 0票数 1

我目前正在编写一个.Net web应用程序,使用SortedBindingList和FilteredBindingList。我遇到的一个问题是,FilteredBindingList匹配部分匹配和完全匹配。当基于用户输入(名称、标题等)进行过滤时,这是很好的,但是当过滤与之相关的ID时,它匹配完整的ID和包含部分匹配的任何ID。下面我举了一个例子。

代码语言:javascript
复制
<select id="CustomerName">
  <option value="1">Frank</option>
  <option value="2">Bert</option>
  <option value="11">Jane</option>
</select>

如果我要对select列表的'value‘属性进行筛选,在这个实例中它是customers唯一标识符。使用FilteredBindingList,选择伯特或简将只返回与伯特或简相关的行。选择Frank将返回与Frank和Jane关联的行,因为在Frank和Jane的记录中都可以匹配1的值。

我的vb.Net代码如下:

代码语言:javascript
复制
Dim filteredList As New FilteredBingList(Of CustomerOrders)(sortedList)
filteredList.ApplyFilter("CustomerID", CustomerName.SelectedValue)
e.BusinessObject = filteredList

我是不是错过了一步?因为似乎没有明显的方法来阻止过滤器匹配部分命中。

非常感谢你抽出时间来阅读/回复我的问题。

干杯,

安迪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-10 14:31:47

经过大量的研究和谷歌搜索(我的google-fu很弱),我找到了我想要的东西。

默认情况下,ApplyFilter用于FilteredBindingList使用的包含,这就是为什么它将返回任何与结果匹配的内容。这很容易通过指定一个新的FilterProvider来补救。如果您需要一个示例,请参阅下面的代码。

代码语言:javascript
复制
Protected Sub Customers_SelectObject(Byval sender as Object, ByVal e As Csla.Web.SelectObjectArgs) Handles CustomerDataSource.SelectObject
    Dim filteredList As New FilteredBindingList(Of CustomerOrders)(sortedList)
    filteredList.FilterProvider = AddressOf CustomFilter
    filteredList.ApplyFilter("CustomerID", CustomerName.SelectedValue)
    e.BusinessObject = filteredList
End Sub

Private Function CustomFilter(item As Object, filter As Object) As Boolean
    Dim result As Boolean = False
    If item IsNot Nothing AndAlso filter IsNot Nothing Then
        result = CStr(item).Equals(CStr(filter))
    End If    
    Return result
End Function

如您所见,代码非常相似,几乎不需要更改。

谢谢你们花时间研究了我的问题。

干杯,

安迪

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32203516

复制
相关文章

相似问题

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