【问题标题】:How to get a gridview to show all table rows when no text is entered in a dependent textbox?当从属文本框中没有输入文本时,如何让网格视图显示所有表格行?
【发布时间】: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


【解决方案1】:

查看CancelSelectOnNullParameter - 默认情况下,此可防止 stront>从选择参数的值为null时调用select命令。将其设置为false 后,即使文本框为空,select SP 仍将被调用,例如

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

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

【讨论】:

    【解决方案2】:

    你可能有一个 if 块来检查 @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]
    

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多