Asp.net Telerik Radsearchbox无法正常过滤

时间:2015-05-10 10:59:32

标签: asp.net telerik filtering

我在我的网站中使用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中输入任何文本时,它会显示列表中的所有项目。(&#34; aaa&#34;&#34; bbb&#34;) 为什么???

1 个答案:

答案 0 :(得分:1)

是。它将显示列表中的所有内容,因为在 SelectMethod 中,您要设置功能 detail()。功能细节返回整个列表。

要解决此问题,您可以使用radseachbox的 OnSearch 事件处理程序,或者只需使用 Linq 过滤结果,然后返回已过滤的列表。

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

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 事件处理程序中。