2010-01-01 81 views
2

好的...所以我有一个基于查询字符串列出表中产品的页面。如果查询字符串为空,则返回表中的所有值

所以,如果我说foo.aspx?FAM = 1种所有来自家庭的产品将陆续上市。

如果查询字符串为空,我怎样才能让我的代码列表中的所有值?

我的SQL命令将不得不有所不同...不能真正看到我能做到这一点。

<asp:SqlDataSource ID="ds_produtos" runat="server" 
    ConnectionString="<%$ ConnectionStrings:LocalSqlServer2 %>" 

    SelectCommand="SELECT DISTINCT [IdProduct], [Name], [Description], [IdFamily], [Price], [Stock] FROM [Product] WHERE ([IdFamily] = @IdFamily)"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="IdFamily" QueryStringField="fam" Type="Int32" /> 
    </SelectParameters> 
</asp:SqlDataSource> 

回答

4

设置属性的默认值,以便它有一个值,当你不传递到页面的任何值:

<asp:QueryStringParameter Name="IdFamily" QueryStringField="fam" Type="Int32" DefaultValue="-1" /> 

在查询中使用默认值:

SelectCommand="select IdProduct, [Name], Description, IdFamily, Price, Stock from Product where IdFamily = @IdFamily or @IdFamily = -1" 
+0

工程就像一个魅力! – 2010-01-01 12:13:18

1

查询更改为

SELECT DISTINCT [IdProduct], [Name], [Description], [IdFamily], [Price], [Stock] FROM [Product] WHERE ([IdFamily] = @IdFamily OR @IdFamily Is NULL)

,并通过空时,有没有为FAM指定的值。

+0

嗯......试过了,它没有奏效。 – 2010-01-01 12:10:38

+0

确保CancelSelectOnNullParameter设置为false。 – Giorgi 2010-01-01 12:27:11

相关问题