我在我的网站中使用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;) 为什么???
答案 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 事件处理程序中。