【发布时间】:2013-05-09 23:52:21
【问题描述】:
以下内容正常工作,并根据在我的文本框中输入的文本过滤我的网格视图。
当没有文本输入到我的文本框中时,我没有得到任何结果并且无法理解原因。
我的问题
当文本框中没有输入文本时,如何让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>
网格视图的结果
我已经尝试并测试了这里找到的许多方法,但是当字符串为空时,所有方法都返回 0 结果。
【问题讨论】:
-
我用 >>。它似乎工作正常,返回所有行。
-
SQL 代码看起来是正确的,如果 txtSearch 为空,你确定它会被调用吗?页面上是否有一些验证可能会阻止调用?
-
可能值得尝试将 SqlDataSource 的 CancelSelectOnNullParameter 设置为 false
-
我也认为代码是正确的,所以缺少一些明显的东西。除非 txtSearch 为空,否则它工作正常,因为代码在数据源中而不是在 vb 中,所以无法检查正在传递的内容。
-
@Netricity。天哪,那行得通。如果您将其发布为答案,我会将其标记为答案。我之前没有使用过 CancelSelectOnNullParameter,如果您能在答案中简要概述其功能,我将不胜感激。再次感谢。
标签: asp.net sql sql-server gridview sqldatasource