に基本的な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句はLIKEN'%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>
デフォルト値の「」が「geteverything」句を提供することを喜んで期待します。つまりLIKE '%%'
、。に何も返されませんGridView
。
苛立たしいことに、たとえば検索結果をハードコーディングすると、Where="it.Name LIKE '%Jon%'"
完全に機能します。
誰かがこれを行う方法を知っていますか?