2

我一直在尝试生成一个下拉列表,其中我同时显示了年份和月份。

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

  • “2012 年 11 月”
  • “2012 年 10 月”
  • “2012 年 9 月”
  • “2012 年 8 月”
  • “2012 年 7 月”
  • “2012 年 6 月”
  • “2012 年 5 月”
  • “2012 年 4 月”
  • “2012 年 3 月”
  • “2012 年 2 月”
  • “2012 年 1 月”
  • 《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"]);

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

4

1 回答 1

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我正在创建ListItemsDateTimes(从今天开始,每个循环回溯一个月)。ToString采用格式字符串,将日期时间转换为您指定格式的字符串。

标准日期和时间格式字符串

如果您还想将 ListItem 的Value属性设置为月份编号(一月为 fe 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();
于 2012-11-09T14:57:56.873 回答