C# asp.net SqlDataSource筛选器表达式空字符串逻辑

C# asp.net SqlDataSource筛选器表达式空字符串逻辑,c#,asp.net,sqldatasource,C#,Asp.net,Sqldatasource,下面是我要执行的逻辑 当文本框为空时,我希望数据网格不显示任何记录。 当文本框不为空时,datagrid将过滤数据 现在,当文本框为空时,它会显示所有记录 我怎样才能解决这个问题?提前谢谢 以下是代码块: <asp:SqlDataSource ID="dsGridview" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT

下面是我要执行的逻辑

当文本框为空时,我希望数据网格不显示任何记录。
当文本框不为空时,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>


我注意到FilterExpression的行为有点不同(它用括号括起参数名或值,实际上它执行SQL转义),因此要检查@UserName是否为null,它将与SelectParameters一起工作。



我注意到FilterExpression的行为有点不同(它用括号括起参数名或值,实际上是SQL转义),所以要检查@UserName是否为null,它可以与SelectParameters一起工作。

只需在
txtSearch
上使用
RequiredFieldValidator
,或者在服务器端使用下面的检查(如果合适)。如果不希望返回任何数据,则无需运行查询:

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

只需在
txtSearch
上使用
RequiredFieldValidator
,或在服务器端使用下面的检查即可。如果不希望返回任何数据,则无需运行查询:

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

我在aspx页面上使用ajax,因此它不会转到后端代码来检查文本框是否为空。因此,当用户在文本框中键入内容时,它将刷新GridView而不重新加载页面。我在aspx页面上使用ajax,因此它不会转到后端代码来检查文本框是否为空。因此,当用户在文本框中键入内容时,它会刷新GridView而不重新加载页面。它就像一个符咒!谢谢你,阿德里安。为什么第一个不适用于filterExpression?有什么好文章解释这个吗?@JohnnySun,我不知道有什么文章,在测试它的时候,我发现它做了某种替换。因此,它将“@UserName is not null”转换为“[文本框中输入的值]not null”。它就像一个符咒!谢谢你,阿德里安。为什么第一个不适用于filterExpression?有什么好文章解释这个吗?@JohnnySun,我不知道有什么文章,在测试它的时候,我发现它做了某种替换。因此,它将“@UserName不为null”转换为“[文本框中输入的值]不为null”。。