2013-05-15 31 views
0

以下工作正常,並基於在我的文本框中輸入的文本過濾我的gridview。如何在沒有文本輸入到依賴文本框中時顯示所有表格行?

當沒有文本輸入到我的文本框中時,我沒有得到任何結果,也無法理解爲什麼。

我的問題

如何獲得一個gridview顯示所有錶行時在文本框中輸入任何文字?

MSSQL

@Search nvarchar(50) 

SELECT [table].[column] 
FROM [table] 
WHERE [table].[column] LIKE '%' + @Search + '%' OR COALESCE(@Search,'') = '' 

MARKUP

<asp:TextBox ID="txtSearch" RunAt="Server" Text=""/> 

<asp:SqlDataSource ID="sqlSearch" RunAt="Server" SelectCommand="spSearch" SelectCommandType="StoredProcedure"> 
    <SelectParameters> 
    <asp:ControlParameter Type="String" Name="Search" ControlID="txtSearch" PropertyName="Text"/> 
    </SelectParameters> 
</asp:SqlDataSource> 

結果的GridView

我曾嘗試和測試在這裏找到很多方法但是都返回0結果時字符串是空的。

+0

我試着用<<< declare @Search nvarchar(50)查詢您的查詢;設置@搜索=''>>>。它似乎工作正確,返回所有行。 –

+0

SQL代碼看起來是正確的,如果txtSearch爲空,你確定它被調用嗎?網頁上是否有可能阻止通話的驗證? – Netricity

+0

這可能是值得嘗試設置SqlDataSource的** CancelSelectOnNullParameter ** ** ** ** – Netricity

回答

1

CancelSelectOnNullParameter - 缺省值,這防止選擇命令從select參數的值爲null時被調用。在設置爲false之後,即使文本框爲空,選擇的SP仍將被調用,例如,

<asp:SqlDataSource ID="sqlSearch" RunAt="Server" 
    CancelSelectOnNullParameter="false" ...> 
</asp:SqlDataSource> 

SqlDataSource控件似乎有點誤導我在這裏,因爲TextBox.Text返回的String.Empty時它是空的,不爲空,所以我不希望有亂用CancelSelectOnNullParameter一個TextBox,但它看來我們必須這樣做。

0

代替聚結的你可以具有如果塊,其檢查是否按如下所示@search參數爲空或不..

if @search is not empty 
    SELECT [table].[column] 
    FROM [table] 
    WHERE [table].[column] LIKE '%' + @Search + '%' OR COALESCE(@Search,'') = '' 
else 
    SELECT [table].[column] 
    FROM [table] 
    WHERE [table].[column] 
相關問題