GridViewにバインドされた基本EntityDataSourceがあります。 GridViewの上にTextBoxがあります。EntityDataSourceでパラメータ化されたLIKE句を使用する
私の目標: a)ユーザータイプ "jon" b)GridViewはフィルタリングされています。 "Jonathan"、 "Enjona"、 "Jonas"。
データソースのWhereプロパティにパラメータ化されたLIKE句を追加する方法の例をいくつか見てきましたが、ユーザーは検索文字列にワイルドカードを使用する必要があります(例:Jonではなく%Jon)。これは一般のユーザーには受け入れられないため、代わりにWhere句にワイルドカードを入れたいと考えています。 SQLで
構文は明白である:つまり名LIKE N '%の@ P1は%' 名
から名前を選択、句がN '%LIKEジョンは私の@ P1 = 'ジョン'、場合% '。
厄介なことに、EntityDataSourceのWhere句は、このように動作していないようです。
<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「%%」「私を私に提供するために」」のデフォルト値を期待するが、何もして返されません。つまり、以下は動作しません。私のGridView。
たとえば、検索結果をハードコードすると、 Where = "it.Name LIKE '%Jon%'"、それは完全に動作します。
誰でもこれを行う方法を知っていますか?