我有一个简单的ASP.NET / C#页面,其中包含DropDownList(“Category”)和GridView(“Items”)。每个通过SqlDataSource从各自的表中提取数据。 “Items”数据源具有Select语句的ControlParameter,下拉列表会自动回发。一切正常 - 我可以在下拉列表中选择一个项目,gridview会自动改变,就像我期望的那样。
有没有办法(在ASP.NET中)我可以在下拉列表中有一个“show all”项目,它将从数据源中删除参数,以便它将拉入所有项目而不管Category?或者这是不可能的,我需要将其中的一些切换到代码隐藏。
答案 0 :(得分:0)
取决于Category
:
A)如果Category
是varchar类型,那么您应该能够将Select
的{{1}}修改为:
SqlDataSource
并在... WHERE Category LIKE @Category
项中加入:
DropDownList
B)如果<asp:ListItem Text="(Any)" Value="%"></asp:ListItem>
是数字类型,那么您应该可以修改Category
以检查&#34;幻数&#34; (您通过业务规则保留的数字表示通配符 - 并确保在某处记录):
Select
并在... WHERE Category = @Category OR @Category = -99
项中加入:
DropDownList
答案 1 :(得分:0)
你可以做这样的事情
如果类别是数字(数据值字段),那么您可以按照以下步骤操作...添加新项目
<asp:ListItem Text="(Any)" Value="%"></asp:ListItem>
在你的select语句的filterexpression中,你需要编写像
这样的东西Convert(Category,System.String) like '{0}%'
这会将您的数字列更改为String类型,并且您的过滤器表达式将传递正确的参数
如果是String类型,则不需要使用Convert函数。
<asp:ListItem Text="(Any)" Value="%"></asp:ListItem>
Category like '{0}%'
请告诉我这是否对您有所帮助。