0

コードビハインドでは、entitydatasourceに動的なwhere句を適用したいのですが、これを同じように、等しくないようにしたいのです。私はこのコードを同等に機能させています。これをLikeステートメントに変換する同等のコードが必要です。

EntityDataSource1.WhereParameters.Add("Name", TypeCode.String, tbxSearch.Text);

Jupaolコメントを読んだ後の解決策:

Xaml:

<WhereParameters>
   <asp:ControlParameter ControlID="tbxSearch" Name="Name" Type="String" />
</WhereParameters>

コードビハインド:(ロードイベント時)

if (string.IsNullOrEmpty(tbxSearch.Text))
{
   this.EntityDataSource1.Where = "1=1";  //fetch all data if empty
}
else
{
   this.EntityDataSource1.Where = "it.Name like '%' + @Name + '%'"; //filter
}
4

1 に答える 1

2

そのコードでは、パラメーターを追加するだけです。like比較を定義する必要がある場所は、where 句にあります。

投稿したコードは次のように翻訳できます。

    <asp:EntityDataSource runat="server" ID="eds"
        .....
        Where="it.fname like '%' + @Name + '%'"
        <WhereParameters>
            <asp:ControlParameter ControlID="tbxSearch" Name="Name" DefaultValue="" />
        </WhereParameters>

コード ビハインドに where を追加するには:

this.eds.Where = "it.fname like '%' + @Name + '%'";

編集1:

何らかの理由で、あなたのようなパラメーター宣言を (コードで) 配置すると機能しませんが、次のようにパラメーターをマークアップに配置すると:

        <WhereParameters>
            <asp:ControlParameter ControlID="tbxSearch" Name="Name" Type="String" DefaultValue="" />
        </WhereParameters>

そして、Page_Load

this.eds.Where = "it.fname like '%' + @Name + '%'";

できます

于 2012-07-19T09:01:58.097 に答える