2012-02-20 49 views
0

我一直在努力與此:ASP.NET GridView控件參數默認值空字符串

我有這個數據源的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

你是什麼意思 「相反的方式」?你期待什麼與發生了什麼? – jadarnel27 2012-02-20 02:21:04

+0

我得到空輸出,如果TextBox1爲空,我想要所有記錄輸出 – 2012-02-20 02:23:02

回答

1

另一種方式,如果你的RDBMS支持ISNULL()是:

SELECT [Jméno], [E_mail], [Adresa] FROM [view1] WHERE ([Jméno] LIKE '%' + ISNULL(@Jméno, '') + '%') 
+0

也不管用... Perphaps,是否有一個預定義的行爲,GridView/DataSource保持空白,直到所有參數設置? – 2012-02-20 02:53:19

+0

哦,對,您的數據源有一個名爲CancelSelectOnNullArgument的屬性。好想法。 – 2012-02-20 03:02:56

+0

非常感謝,我想我現在可以解決它。 – 2012-02-20 03:07:48

1

你需要的是:

SELECT 
    [Jméno], [E_mail], [Adresa] 
FROM 
    [view1] 
WHERE ([Jméno] LIKE '%' + @Jméno + '%' OR @Jméno IS NULL) 

GridView中,默認情況下,改變空字符串爲NULL把它發送到數據庫服務器之前。

+0

我不知道爲什麼,但不幸的是,這對我不起作用。 – 2012-02-20 02:44:57

1

你可以試試這種方法:

...WHERE ((@Jméno is null) OR (Jméno like '%' + @Jméno + '%')) 
+0

我不知道爲什麼,但不幸的是,這並不適合我。 – 2012-02-20 02:46:05