0

我有一个简单的 ASP.NET/C# 页面,其中包含一个 DropDownList(“Category”)和一个 GridView(“Items”)。每个都通过 SqlDataSource 从各自的表中提取数据。“Items”数据源有一个用于 Select 语句的 ControlParameter,并且下拉列表会自动回发。一切正常——我可以在下拉列表中选择一个项目,gridview 会像我预期的那样自动更改。

有没有办法(在 ASP.NET 中)我可以在下拉列表中有一个“显示全部”项目,该项目将从数据源中删除参数,以便无论类别如何,它都会拉入所有项目?或者这是不可能的,我需要将其中的一些切换到代码隐藏。

4

2 回答 2

0

取决于Category

A)如果Category是 varchar 类型,那么您应该能够将您Select的修改SqlDataSource为:

... WHERE Category LIKE @Category

并在您DropDownList的项目中包含:

<asp:ListItem Text="(Any)" Value="%"></asp:ListItem>

B)如果 Category是数字类型,那么您应该能够修改您的Select以检查“幻数”(您通过业务规则保留的表示通配符的数字 - 并确保在某处记录):

... WHERE Category = @Category OR @Category = -99

并在您DropDownList的项目中包含:

<asp:ListItem Text="(Any)" Value="-99"></asp:ListItem>
于 2012-08-02T20:22:25.533 回答
0

你可以做这样的事情

如果类别是数字(数据值字段),那么您可以按照以下方式进行操作..添加一个新项目

<asp:ListItem Text="(Any)" Value="%"></asp:ListItem>

在您的选择语句的过滤器表达式中,您需要编写类似

Convert(Category,System.String) like '{0}%'

这会将您的数字列更改为字符串类型,并且您的过滤器表达式将传递正确的参数

如果它是 String 类型,则无需使用 Convert 函数。

<asp:ListItem Text="(Any)" Value="%"></asp:ListItem>

Category like '{0}%'

让我知道这是否对您有帮助。

于 2012-08-03T09:49:01.090 回答