添加一年的月份到下拉列表

时间:2012-11-09 14:51:23

标签: c# asp.net

我一直试图生成一个下拉列表,其中显示年份和月份。

下拉列表必须显示为1年,如下所示。

  • “2012年11月”
  • “Oct 2012”
  • “2012年9月”
  • “Aug 2012”
  • “2012年7月”
  • “Jun 2012”
  • “May 2012”
  • “2012年4月”
  • “2012年3月”
  • “2012年2月”
  • “Jan 2012”
  • “Des 2011”

那应该是一个月的一年。

我正在使用此javascript在下拉列表中提交:

$('.dropdownMonthYear').change(function ()
        {
            var values = $('.dropdownMonthYear').val().split(",");
            var month = values[0];
            var year = values[1];
            window.location = '/Garage/Top10Cars.aspx?month=' + month + '&year=' + year;
        });

代码隐藏:

month = Convert.ToInt32(Request.QueryString["month"]);
            year = Convert.ToInt32(Request.QueryString["year"]);

任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:4)

这是使用Linq的一种方式:

var source = Enumerable.Range(0, 12)
    .Select(i =>  new ListItem(DateTime.Today.AddMonths(-1 * i).ToString("MMM yyyy")));
DdlYearMonth.DataSource = source;
DdlYearMonth.DataBind();

Range类似于for循环。在Select我正在从ListItems创建DateTimes(从今天开始,每个循环返回一个月)。 ToString采用格式字符串,将日期时间转换为具有指定格式的字符串。

Standard Date and Time Format Strings

如果您还想将ListItem的Value属性设置为月份编号(1月份为f.e.1):

var source = Enumerable.Range(0, 12)
   .Select(i => DateTime.Today.AddMonths(-1 * i))
   .Select(d => new { Text = d.ToString("MMM yyyy"), Value = d.Month.ToString() });
DdlYearMonth.DataTextField = "Text";
DdlYearMonth.DataValueField = "Value";
DdlYearMonth.DataSource = source;
DdlYearMonth.DataBind();