2012-04-10 13 views
1

は、ここで私が実行したいロジックです。asp.netをSqlDataSource FilterExpression空の文字列ロジック

テキストボックスが空になると、私はレコードを示さないデータグリッドをしたいです。テキストボックスが空でない場合
は、その後、データグリッドは、データをフィルタリングします。今

テキストボックスが空であるとき、それはすべてのレコードを示しています。

どうすれば修正できますか?前もって感謝します!

ここでは、コードブロックです:

<asp:SqlDataSource ID="dsGridview" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
    SelectCommand="SELECT UserName, gender, age FROM users" 
    FilterExpression="UserName like '%{0}%'"> 
    <FilterParameters> 
     <asp:ControlParameter Name="UserName" ControlID="txtSearch" PropertyName="Text" /> 
    </FilterParameters> 
</asp:SqlDataSource> 

答えて

1
<asp:SqlDataSource ID="dsGridview" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
    SelectCommand="SELECT UserName, gender, age FROM users 
        UserName like '%' [email protected] + '%' and @UserName is not null"> 
    <SelectParameters> 
     <asp:ControlParameter Name="UserName" ControlID="txtSearch" PropertyName="Text" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

私はそうするために@UserNameをチェックするために、(それは、括弧でパラメータ名または値をラップし、実際にそれがSQLエスケープん)FilterExpressionは少し異なる振る舞い気づきましたそれはSelectParametersで動作します。

+0

@JohnnySun、私は更新をしなかった –

+0

それは魔法のように動作します! Adrianに感謝します。最初のものがfilterExpressionで機能しなかったのはなぜですか?これを説明している良い記事ですか? – sbs

+0

@ JohnnySun、私はそれをテストしている間、私はそれが何らかの種類の交換を行うことがわかった。それで、 "@UserNameはnullではありません"を "[テキストボックスに入力された値]がnullではない"と解釈します。 –

0

ちょうどtxtSearchRequiredFieldValidatorを使用するか、または適切な場合には、サーバー側で以下のチェックを使用します。あなたはどのようなデータが返されたくない場合、クエリを実行する必要:

if(String.IsNullOrEmpty(txtSearch.Text)) 
{ 
    //don't databind and use validation to tell the user to enter data 
} 
+0

aspxページでajaxを使用しているので、テキストボックスが空の。ユーザーがテキストボックスに何かを入力すると、ページをリロードせずにGridViewが更新されます。 – sbs

関連する問題