1

这是我要执行的逻辑。

当文本框为空时,我希望数据网格不显示任何记录。
当文本框不为空时,数据网格将过滤数据。

现在,当文本框为空时,它会显示所有记录。

我该如何解决?提前致谢!

这是代码块:

<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 是否为空,它适用于 SelectParameters。

于 2012-04-10T15:44:40.537 回答
0

只需在服务器端使用 aRequiredFieldValidatortxtSearch在适当的情况下使用以下检查。当您不希望返回任何数据时,无需运行查询:

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