2017-04-22 56 views
0

我必须创建一个下拉菜单,允许用户选择一个日期范围,并给出他们的选择,显示范围之间的日期的所有记录。c# - 下拉日期范围列表来过滤相关数据

我知道如何查询一个范围(下面的代码片段),但是如何查询下拉列表只填充“Last 7 Days”,“Last 15 Days”,“Last 30 Days” ,“过去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

将时间段传递给你的函数,然后你可以查询任何范围。 – Jasen

+0

查看预定义的范围。 [链接](http://www.daterangepicker.com/#ex4) –

+0

我已经查看过那个链接,但我使用此下拉搜索功能,这需要在我的控制器。或者预定义范围会以某种方式解决查询问题? – CodeFrog

回答

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; 
    ... 
} 

和预先设定的选择控制的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; 
    ... 
} 

然后,您可以使用客户端插件来完成提供这两个日期的工作。

+0

非常感谢 - 这绝对是我正在寻找的一大块。 你能解释“选择控制”和相关代码的含义吗?这与观点有关吗? – CodeFrog

+0

您的HTML视图中的'