【发布时间】:2017-08-18 16:47:23
【问题描述】:
我正在使用 C# 为我的代码隐藏创建一个项目跟踪器 ASP.net wbsite。我的默认视图有一个查询 SQL Server DB 的 GridView,其中一列是项目状态 (ProjStatus),它可以有 5 个不同的选项(进行中、待定、完成、推迟、取消)。
现在,我需要使用复选框列表创建增量过滤器。例如,如果我选择“In Progress”复选框,我只想查看“In Progress”项目,但如果我还选中“Pending”复选框,那么我希望同时查看两者等等。
我之前只有 3 种状态(进行中、待定和完成),我通过使用 if 语句对每个复选框组合进行硬编码解决了这个问题,但是由于现在有 5 种状态,所以可能的组合太多了,这会花费我很长时间要做到这一点。在我的代码隐藏中以编程方式执行此操作的任何建议?
谢谢!
编辑:
我之前使用的是 RadioButtons,但我今天早些时候应经理的要求更改了它。这是我之前使用的代码,结合了 SQLDataSource 上的 FilterExpression
if (radioStatus.SelectedItem.Value == "Active")
{
SqlDataSource1.FilterExpression = "[PROJ_STATUS] = 'Active'";
GridView1.DataBind();
}
else if (radioStatus.SelectedItem.Value == "Pending")
{
SqlDataSource1.FilterExpression = "[PROJ_STATUS] = 'Pending'";
GridView1.DataBind();
}
else if (radioStatus.SelectedItem.Value == "Postponed")
{
SqlDataSource1.FilterExpression = "[PROJ_STATUS] = 'Postponed'";
GridView1.DataBind();
}
else if (radioStatus.SelectedItem.Value == "Cancelled")
{
SqlDataSource1.FilterExpression = "[PROJ_STATUS] = 'Cancelled'";
GridView1.DataBind();
}
else
{
SqlDataSource1.FilterExpression = "[PROJ_STATUS] = 'Complete'";
GridView1.DataBind();
}
【问题讨论】:
-
我可以看看你尝试了什么吗?
-
我用我的代码添加了一个编辑,但是,这是我之前使用单选按钮实现的解决方案,因此没有增量过滤,因为您只能选择一个选项(故意)
-
这是一个从复选框中选中多个过滤器值的案例?
标签: c# asp.net gridview checkbox filter