This example below shows how to translate date period strings to date ranges based on the value selected from a DropDownList.

ASPX:

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">
    <title>Date Periods</title>
</head>
<body>
    <form id="form2" runat="server">
        <asp:DropDownList ID="DropDownList2" runat="server"  
                          AutoPostBack ="true" 
                          AppendDataBoundItems="true"
            onselectedindexchanged="DropDownList1_SelectedIndexChanged">
            <asp:ListItem Value="-1">Select Period</asp:ListItem>
            <asp:ListItem Value="0">Today</asp:ListItem>
            <asp:ListItem Value="1">Yesterday</asp:ListItem>
            <asp:ListItem Value="2">This Week</asp:ListItem>
            <asp:ListItem Value="3">Last Week</asp:ListItem>
            <asp:ListItem Value="4">This Month</asp:ListItem>
        </asp:DropDownList>
    </form>
</body>
</html>


CODE BEHIND:

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (DropDownList1.SelectedItem.Value != "-1")
        {
            int period = int.Parse(DropDownList1.SelectedItem.Value);
            string parsePeriod = GetPeriods(ConvertDatePeriods(period));
            //print the converted period
            Response.Write(parsePeriod);
        }
    }

    public enum DatePeriods
    {
        Today,
        Yesterday,
        ThisWeek,
        LastWeek,
        ThisMonth
    }

    public DatePeriods ConvertDatePeriods(int intRepPeriod)
    {
        switch (intRepPeriod)
        {
            case 1:
                return DatePeriods.Yesterday;
            case 2:
                return DatePeriods.ThisWeek;
            case 3:
                return DatePeriods.LastWeek;
            case 4:
                return DatePeriods.ThisMonth;
        }
        return DatePeriods.Today;
    }

    public string GetPeriods(DatePeriods periods)
    {

        DateTime referenceDate;
        DateTime startDate = new DateTime();
        DateTime endDate = new DateTime();
        string dateString = string.Empty;

        switch (periods)
        {
            case DatePeriods.Today:
                referenceDate = DateTime.Now;
                dateString = referenceDate.ToShortDateString();
                break;
            case DatePeriods.Yesterday:
                referenceDate = DateTime.Now.AddDays(-1);
                dateString = referenceDate.ToShortDateString();
                break;
            case DatePeriods.ThisWeek:
                referenceDate = DateTime.Now;
                startDate = referenceDate;
                endDate = referenceDate.AddDays(6);
                dateString = startDate.ToShortDateString() + " - " + endDate.ToShortDateString();
                break;
            case DatePeriods.LastWeek:
                referenceDate = DateTime.Now.AddDays(-7);
                startDate = referenceDate;
                endDate = startDate.AddDays(6);
                dateString = startDate.ToShortDateString() + " - " + endDate.ToShortDateString();
                break;
            case DatePeriods.ThisMonth:
                referenceDate = DateTime.Now;
                startDate = new DateTime(referenceDate.Year, referenceDate.Month, 1);
                endDate = startDate.AddMonths(1).AddDays(-1);
                dateString = startDate.ToShortDateString() + " - " + endDate.ToShortDateString();
                break;
        }
        return dateString;
    }


The code above will return the corresponding date ranges based on the period selected from the DropDownList.

 

Technorati Tags: ,