我一直在努力解决这个问题:
我有一个包含此数据源的GridView:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:Sprava_SubjektuConnectionString1 %>"
SelectCommand="SELECT [Jméno], [E_mail], [Adresa] FROM [view1] WHERE ([Jméno] LIKE '%' + @Jméno + '%')">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="Jméno" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
我的愿望是,当TextBox1为空时,我会得到输出:
SELECT [Jméno], [E_mail], [Adresa] FROM [view1] WHERE [Jméno] LIKE '%%'
但它完全相反。有人可以帮我这个吗?
答案 0 :(得分:1)
您需要的是:
SELECT
[Jméno], [E_mail], [Adresa]
FROM
[view1]
WHERE ([Jméno] LIKE '%' + @Jméno + '%' OR @Jméno IS NULL)
默认情况下,GridView会在将空字符串发送到数据库服务器之前将其更改为NULL。
答案 1 :(得分:1)
您可以尝试这种技术:
...WHERE ((@Jméno is null) OR (Jméno like '%' + @Jméno + '%'))
答案 2 :(得分:1)
另一种方法,如果你的RDBMS支持ISNULL()是:
SELECT [Jméno], [E_mail], [Adresa] FROM [view1] WHERE ([Jméno] LIKE '%' + ISNULL(@Jméno, '') + '%')