我必须创建一个下拉菜单,允许用户选择日期范围,并根据他们的选择,显示范围之间的日期的所有记录。
我知道如何查询一个范围(下面的代码片段),但是如何查询下拉菜单只填充“过去7天”,“过去15天”,“过去30天”的选项, “过去60天”和“所有交易”(然后根据选择显示相应的交易)?
也很高兴知道如何使用一个名为“自定义”的选项,允许用户输入自己的日期范围,但这不是优先事项。
我在下面的内容将在过去七天内查询和显示交易,但这显然无法实现我想要的目标。
public SelectList GetDateRanges()
{
DateTime today = DateTime.Today;
DateTime minusSeven = today.AddDays(-7);
DateTime minusFifteen = today.AddDays(-15);
DateTime minusThirty = today.AddDays(-30);
DateTime minusSixty = today.AddDays(-60);
var query = from t in db.Transactions
where t.TransactionDate >= minusSeven
select t;
我的想法是我可能会创建一个静态列表,但后来我不知道如何根据用户在该列表中的选择进行查询。
答案 0 :(得分:0)
将句点传递回您的功能
public SelectList GetDateRanges(int daysBack)
{
var oldestDate = (DateTime.Today).AddDays(daysBack * -1);
var query = from t in db.Transactions
where t.TransactionDate >= oldestDate
select t;
...
}
并在select控件中预设daysBack值。
<select name="daysBack">
<option value="7">Last 7 days</option>
<option value="15">Last 15 days</option>
</select>
如果您最终想要给予用户完全控制权,那么请传递两个日期边界。每个其他选项只是此查询的一个子集。
public SelectList GetDateRanges(DateTime startDate, DateTime endDate)
{
var query = from t in db.Transactions
where t.TransactionDate >= startDate &&
t.TransactionDate <= endDate
select t;
...
}
然后,您可以使用客户端插件来完成提供两个日期的工作。