У меня есть базовый EntityDataSource
, связанный с GridView
.У меня TextBox
выше GridView
для поиска.
Моя цель: a) Типы пользователей "jon" b) GridView` фильтруется, например, "Jonathan", "Enjona", "Jonas".
Я видел несколько примеров того, как добавить параметризованное предложение LIKE в свойство Where моего источника данных, однако всем им нужно, чтобы пользователь использовал подстановочный знак в строке поиска (например,% Jon вместо Jon).На самом деле это неприемлемо для непрофессионалов, поэтому я хочу вместо этого использовать подстановочный знак в предложении Where.
Синтаксис в SQL очевиден: SELECT Name FROM Names WHERE Name LIKE N'%@p1%'
Другими словами, если @p1='Jon'
, мое предложение WHERE LIKE N'%Jon%'
.
К сожалению, предложение Where в EntityDataSource
не работает таким образом.Другими словами, следующее не работает:
<asp:EntityDataSource ID="edsNames" runat="server"
ConnectionString="name=SalesEntities"
DefaultContainerName="SalesEntities" EntitySetName="Names"
OrderBy="it.Name" Where="it.Name LIKE '%@p1%'">
<WhereParameters>
<asp:ControlParameter ControlID="txtFilter" Name="p1"
PropertyName="Text" Type="String" DefaultValue="" />
</WhereParameters>
</asp:EntityDataSource>
Я бы с радостью ожидал, что значение по умолчанию "" предоставит мне мое предложение "получить все", т.е. LIKE '%%'
, но ничего не возвращается вmy GridView
.
Разочаровывает, если я жестко закодирую результат поиска, например, Where="it.Name LIKE '%Jon%'"
, он отлично работает.
Кто-нибудь знает способ сделать это?