C# Sqldatasouce中的过滤器表达式

C# Sqldatasouce中的过滤器表达式,c#,asp.net,visual-studio,C#,Asp.net,Visual Studio,我有一个sqldatasource,其中添加了一个简单的过滤器表达式,只是为了测试 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [project_details]"

我有一个sqldatasource,其中添加了一个简单的过滤器表达式,只是为了测试

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
                SelectCommand="SELECT * FROM [project_details]" 
                FilterExpression="id=33" 
                ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
                EnableCaching="True">


更新面板中的网格视图,其数据源为sqldatasouce1。但在执行此页面时,网格视图显示了所有过滤结果。请帮助我,我在这里完全震惊了

如果id以文本格式存储,那么您可能希望在表达式中使用单引号,如下所示:


id='33'

如果id以文本格式存储,则可能需要在表达式中使用单引号,如下所示:


id='33'

::数据源模式已设置为“数据集”,是否检查了打字错误?您确定使用的是正确的SqlDatasourceID吗?FilterExpression应该可以正常工作。是的。我已经检查了大约一百次了。我试着按照你说的方式使用“where”它工作正常。但是如果我没有给参数指定参数值,也会出现一个问题。它不会显示任何结果。因为用户应该在运行时添加where参数。::数据源模式已设置为“数据集”。是否检查了打字错误?您确定使用的是正确的SqlDatasourceID吗?FilterExpression应该可以正常工作。是的。我已经检查了大约一百次了。我试着按照你说的方式使用“where”它工作正常。但是如果我不为参数提供参数值,也会出现一个问题。它不会显示任何结果。因为假定用户在运行时添加where参数。不工作。我认为单个qoute仅适用于字符串字段。MSDN您可以在FilterExpression属性中包含参数。如果参数是字符串或字符类型,请将参数用单引号括起来。如果参数是数字类型,则不需要引号。FilterParameters集合包含为在FilterExpression属性中找到的占位符计算的参数。这就是为什么我写“If”…我不知道您的字段是什么格式,我给了您一个示例解决方案,以防它是字符串。不起作用。我认为单个qoute仅适用于字符串字段。MSDN您可以在FilterExpression属性中包含参数。如果参数是字符串或字符类型,请将参数用单引号括起来。如果参数是数字类型,则不需要引号。FilterParameters集合包含为在FilterExpression属性中找到的占位符计算的参数。这就是为什么我写了“如果”…我不知道字段的格式,我给了您一个示例解决方案,以防它是字符串。