【问题标题】:QUOTES ON ASP.NET - SQLDataSource - FilterExpressionASP.NET 上的引用 - SQLDataSource - FilterExpression
【发布时间】:2011-05-24 12:25:58
【问题描述】:

各位专家,

当我传递带有报价的 serach 时,我收到以下错误,例如abb的

The expression contains an invalid string constant: '. 

无论如何我可以解决这个问题吗?另外,如果你能给我发一个关于过滤器表达式的所有可用函数的链接,比如替换、投射等,那就太好了。

谢谢

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    用两个单独的 ' 替换 ' 查询有效。

    【讨论】:

    • 我可以在表达式或 javascript 中执行此操作吗?如果可能的话,我更喜欢表达
    • 你可以在任何地方使用它,使用replace方法并将['替换为两个单独的'],通常这个问题出现在sql查询中。
    • 好的,你可能需要给我看。如果我在 filterExpression:Name LIKE '%{0}%' 上有这个(在视觉工作室设计器中)。我们如何替换 {0} 参数?我尝试替换并抱怨替换不起作用。
    【解决方案2】:

    在SqlDataSource中添加

    onfiltering="SqlDataSource1_Filtering"

    函数背后的代码:

     protected void SqlDataSource1_Filtering(object sender, SqlDataSourceFilteringEventArgs e)
        {
            SqlDataSource1.FilterExpression.Replace("{0}", e.ParameterValues[0].ToString().Replace("'","''" );
    
        }
    

    【讨论】:

    • 感谢@saurabh,添加了 DS_Filtering(....) 后面的代码,但我收到此错误消息 CS1061:'ASP.default_aspx' 不包含 'DS_Filtering' 的定义并且没有扩展方法'可以找到接受“ASP.default_aspx”类型的第一个参数的 GDS_Filtering(您是否缺少 using 指令或程序集引用?)
    【解决方案3】:

    对于遇到此问题的任何人。下面的代码解决了这个问题:

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        DS.SelectCommand = 
          "SELECT ReportName, ReportType, 
           FROM Table 
           WHERE ReportName LIKE @param 
           ORDER BY ReportType Desc";
       DS.SelectParameters.Add("Param", searchTxtBox.Text.Replace("'", "''"));
       DS.DataBind();
       ListView1.DataBind();               
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 2017-12-19
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多