这是我想要执行的逻辑。
当文本框为空时,我希望数据网格没有显示记录 当文本框不为空时,数据网格将过滤数据。
现在,当文本框为空时,它会显示所有记录。
我该如何解决?提前谢谢!
这是代码块:
<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>
答案 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
}