组合框中的通用周期范围方法

本文关键字:周期 范围 方法 组合 | 更新日期: 2023-09-27 18:06:04

我希望有人在这方面指导我。当我从组合框中选择一个周期时,我必须在几个aspx页面中使用相同的方法来计算范围日期。例如,我在一个页面中有一个周期组合(当前月销售额,上个月销售额,去年销售额,当前年销售额),在另一个页面中有一个周期组合(当前周费用,当前月费用等),结果是相同的,给我一个日期范围(开始和结束日期),但不是所有的组合都有相同的周期(一个有:月,周,年和另一个:月和年)。我怎么做才能使它通用?在Enum位标志或用户控件中思考…有人能帮我一下吗?谢谢!

组合框中的通用周期范围方法

你需要做的是:

  1. 将时间戳字符串放入组合框选项中,例如"2013-03-01:2013-03-31"表示"本月费用"。您将需要一个函数来获取本月、上月、本周等的开始和结束。我在下面写了一个例子:
  2. 保持你的组合框选项文本相同(例如,"This month’s expenses")。
  3. 读取组合框中的选项值,并使用日期/时间字符串解析器来获取范围。

获取上周、上个月等的代码类似于:

public static void GetPeriod(string selected_period, out DateTime start, out DateTime end)
{
    switch (selected_period)
    {
        case "last year":
            start = new DateTime(DateTime.Today.Year - 1, 1, 1);
            end = new DateTime(DateTime.Today.Year, 1, 1);
            break;
        case "this year":
            start = new DateTime(DateTime.Today.Year, 1, 1);
            end = new DateTime(DateTime.Today.Year + 1, 1, 1).AddDays(-1);
            break;
        case "last month":
            start = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-1);
            end = new DateTime(DateTime.Today.Year + 1, DateTime.Today.Month, 1).AddDays(-1);
            break;
        case "this month":
            start = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
            end = new DateTime(DateTime.Today.Year + 1, DateTime.Today.Month, 1).AddMonths(1).AddDays(-1);
            break;
        case "last week":
            start = DateTime.Today.AddDays(-7);
            while (start.DayOfWeek != DayOfWeek.Sunday)
                start = start.AddDays(-1);
            end = start.AddDays(6);
            break;
        case "this week":
            start = DateTime.Today;
            while (start.DayOfWeek != DayOfWeek.Sunday)
                start = start.AddDays(-1);
            end = start.AddDays(6);
            break;
    }
}

然后将开始和结束转换为字符串,并将其放入组合框选项值中

这个答案太长了,所以我创建了另一个答案。我没有使用RadComboBox,但我在VS 2010中创建了自己的自定义。ascx控件。下面是你需要做的:

    创建.ascx控件
  1. 添加ASP。. NET组合框(或者可能是RadComboBox)
  2. 创建一个控件属性(字符串),列出你想要显示的选项,例如,"年,周,月"。这样,你就可以改变HTML中每个页面的选项,而不需要任何其他编码。
  3. 在.ascx控件代码中,根据#2中的自定义属性更改显示选项。
  4. 在控件中创建函数,根据所选择的选项来获取周期的开始和结束。

这样,在给定的页面中所要做的就是插入自定义控件,指定自定义属性,然后在需要时调用GetStart或GetEnd。所有其他编码都由控件本身负责。我想你也可以用RadComboBox来做这个,虽然我从来没有使用过它。