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 事件处理程序中。
我在我的站点中使用 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 事件处理程序中。