2012-11-09 67 views
2

我被困在試圖生成一個下拉列表,我有兩個年份和月份顯示。添加一個月與下拉列表

下拉框必須有1年顯示,如下所示。

  • 「2012年11月」
  • 「2012年10月」
  • 「2012年9月」
  • 「2012年8月」
  • 「2012年7月」
  • 「2012年6月」
  • 「五月2012「
  • 」Apr 2012「
  • 」Mar 2012「
  • 「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"]); 

任何人都知道這可怎麼辦呢?

+1

的問題究竟是什麼?爲什麼你直接將月份換成int? – ChruS

+0

你是用C#還是javascript生成月份? – LukeHennerley

+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我從DateTimes(從今天開始,每個循環返回一個月)創建ListItemsToString將採用格式字符串將日期時間轉換爲指定格式的字符串。

Standard Date and Time Format Strings

如果你也想設置列表項的Value財產的月份數(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(); 
+0

是否可以在下拉列表選項中輸入值1-12而不是value =「nov 2012」? – sindrem

+0

@sindrem:編輯我的答案,顯示如何設置文本**和** ListItems的值。 –

+0

你的LINQ-fu很強壯,年輕。乾淨簡潔的解決方案。 – pseudocoder

相關問題