asp.net SqlDataSource FilterExpression空字符串逻辑

时间:2012-04-10 15:40:35

标签: c# asp.net sqldatasource

这是我想要执行的逻辑。

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

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

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

这是代码块:

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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

只需在RequiredFieldValidator上使用txtSearch或在服务器端使用以下检查。当您不想要返回任何数据时,无需运行查询:

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