1

これが私が実行したいロジックです。

テキストボックスが空の場合、データグリッドにレコードが表示されないようにします。
テキストボックスが空でない場合、datagridはデータをフィルタリングします。

現在、テキストボックスが空の場合、すべてのレコードが表示されます。

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

コードブロックは次のとおりです。

<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>
4

2 に答える 2

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

FilterExpressionの動作が少し異なることに気付きました(パラメーター名または値を角かっこで囲み、実際にはSQLエスケープを行います)。@ UserNameでnullをチェックするには、SelectParametersで機能します。

于 2012-04-10T15:44:40.537 に答える
0

RequiredFieldValidatorサーバー側txtSearchまたはサーバー側で使用するだけで、必要に応じて以下のチェックを使用してください。データを返したくない場合は、クエリを実行する必要はありません。

if(String.IsNullOrEmpty(txtSearch.Text))
{
    //don't databind and use validation to tell the user to enter data
}
于 2012-04-10T15:45:32.423 に答える