【问题标题】:Remove parameter on page with gridview connected to dropdown selection删除页面上的参数,gridview 连接到下拉选择
【发布时间】:2012-05-23 11:25:17
【问题描述】:
我有一个简单的 ASP.NET/C# 页面,其中包含一个 DropDownList(“类别”)和一个 GridView(“项目”)。每个都通过 SqlDataSource 从各自的表中提取数据。 “Items”数据源有一个用于 Select 语句的 ControlParameter,并且下拉列表会自动回发。一切正常——我可以在下拉列表中选择一个项目,gridview 会自动改变,就像我期望的那样。
有没有办法(在 ASP.NET 中)我可以在下拉列表中有一个“显示全部”项,该项将从数据源中删除参数,以便无论类别如何,它都会拉入所有项?或者这是不可能的,我需要将其中一些切换到代码隐藏。
【问题讨论】:
标签:
asp.net
gridview
.net-4.0
drop-down-menu
【解决方案1】:
取决于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>
【解决方案2】:
你可以这样做
如果类别是数字(数据值字段),那么您可以按照以下方式进行操作..添加新项目
<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}%'
如果这对你有帮助,请告诉我。