Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当在相关文本框中未输入任何文本时,如何使gridview显示所有表行?_Asp.net_Sql_Sql Server_Gridview_Sqldatasource - Fatal编程技术网

Asp.net 当在相关文本框中未输入任何文本时,如何使gridview显示所有表行?

Asp.net 当在相关文本框中未输入任何文本时,如何使gridview显示所有表行?,asp.net,sql,sql-server,gridview,sqldatasource,Asp.net,Sql,Sql Server,Gridview,Sqldatasource,以下选项正常工作,并根据在“我的文本框”中输入的文本过滤我的gridview 当我的文本框中没有输入任何文本时,我不会得到任何结果,也无法理解原因 我的问题 当文本框中没有输入文本时,如何使gridview显示所有表行 MSSQL @Search nvarchar(50) SELECT [table].[column] FROM [table] WHERE [table].[column] LIKE '%' + @Search + '%' OR COALESCE(@Search,'

以下选项正常工作,并根据在“我的文本框”中输入的文本过滤我的gridview

当我的文本框中没有输入任何文本时,我不会得到任何结果,也无法理解原因

我的问题

当文本框中没有输入文本时,如何使gridview显示所有表行

MSSQL

@Search nvarchar(50)

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

<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结果。

您可能会有一个if块来检查@search参数是否为空,而不是coalesce,如下所示

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]
查看-默认情况下,此可防止在select参数的值为null时调用select命令。将其设置为
false
后,即使文本框为空,仍会调用select SP,例如

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


SqlDataSource在这里似乎有点误导我,因为TextBox.Text在为空时返回String.Empty,而不是null,因此我不希望必须处理TextBox的CancelSelectOnNullParameter,但似乎我们必须这样做。

我用>尝试了您的查询。它似乎工作正常,返回了所有行。SQL代码看起来正确,您确定在txtSearch为空时调用它吗?页面上是否存在可能阻止调用的验证?可能值得尝试将SqlDataSource的CancelSelectOnNullParameter设置为False。我还认为代码是正确的,因此我缺少一些明显的东西。除非txtSearch为空,否则它可以正常工作。因为代码在数据源中,而不是在vb中,所以无法检查传递的内容。@Netricity。天哪,这很有效。如果你把它作为答案贴出来,我会把它标记为答案。我以前没有使用过CancelSelectOnNullParameter,如果您能在回答中简要介绍一下它的功能,我将不胜感激。再次感谢。