Asp.net Telerik Radsearchbox 过滤不正确

Asp.net Telerik Radsearchbox not filter properly

我在我的站点中使用 radsearchbox 作为一个控件来通过 db 进行搜索。我使用对象数据源作为radsearchbox 的数据源。 aspx 代码在这里:

  <telerik:RadSearchBox ID="RadSearchBox1" runat="server" 
    DataSourceID="ObjectDataSourceSearch" 
    DataTextField="Name" DataValueField="ID" 
   EmptyMessage="search here" 
     Skin="Silk" MinFilterLength="3">
  </telerik:RadSearchBox>

  <asp:ObjectDataSource ID="ObjectDataSourceSearch" runat="server" 
    SelectMethod="detail" TypeName="InStore">
  </asp:ObjectDataSource>

详细函数为:

 Function detail() As List(Of info)
    Dim All_info As New List(Of info)
      Dim _inf As New info
            _inf.ID = 1
            _inf.Name = "aaa"
             All_info.Add(_inf)
    Dim _inf2 As New info
    _inf2.ID = 100
   _inf2.Name = "bbb"
    All_info.Add(_inf2)
     Return All_info
End Function

当我在 radsearchbox 中输入任何文本时,它会显示列表中的所有项目。("aaa" 和 "bbb") 为什么???

是的。它将显示列表中的所有内容,因为在 SelectMethod 中您正在设置函数 detail()。函数详细信息是 returning 整个列表。

为了克服这个问题,您可以使用 radseachbox 的 OnSearch 事件处理程序,或者简单地使用 Linq 来过滤结果,然后 return过滤后的列表。

我不知道你的情况,但这是我的猜测。试试这个代码

Protected Function Search(sender As Object, e As SearchBoxEventArgs) As List(Of info)
    Dim searchtext As String = e.text
    Dim filteredinfo As New List(Of info)()
    Dim searchresult As New List(Of info)()
    filteredinfo = detail()
    searchresult = filteredinfo.where(Function(res) res.Contains(searchtext))
    searchresult += filteredinfo.where(Function(res1) res1.Contains(searchtext))
    Return searchresult
End Function

并且不要忘记将此代码粘贴到 radsearchbox 的 OnSearch 事件处理程序中。