Asp.net 当在相关文本框中未输入任何文本时,如何使gridview显示所有表行?
以下选项正常工作,并根据在“我的文本框”中输入的文本过滤我的gridview 当我的文本框中没有输入任何文本时,我不会得到任何结果,也无法理解原因 我的问题 当文本框中没有输入文本时,如何使gridview显示所有表行 MSSQLAsp.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,'
@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,如果您能在回答中简要介绍一下它的功能,我将不胜感激。再次感谢。