2012-11-09 2 views
2

나는 년과 월 모두 표시되는 드롭 다운 목록을 생성하려고 노력 중입니다.dropdownlist에 1 년 추가하기

드롭 다운 목록은 1 년 동안 아래에 표시되어야합니다.

  • "년 11 월 2012"
  • "년 10 월 2012"
  • 있도록, "SEP 2012"
  • "2012년 8월"
  • "2012년 7월"
  • "6 월 2012"
  • "월 2012 "
  • "2012 년 4 월
  • "2012 년 3 월"
  • "2012년 2월"
  • "2012년 1월"
  • "데스 2011"

것은 개월 1 년되어야한다.

나는 드롭 다운리스트에 제출이 자바 스크립트를 사용하고 있습니다 :

$('.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; 
     }); 

Codebehind가 :

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

누구든지이 작업을 수행 할 수있는 방법을 알아?

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

Range에 대한 루프와 유사하다 :

+1

문제가 정확히 무엇입니까 :

Standard Date and Time Format Strings

당신은 또한 (. 월로 f.e 1) 개월 수에을 ListItem의 Value 속성을 설정하려면

? 왜 월을 int로 직접 변환합니까? – ChruS

+0

C# 또는 자바 스크립트로 월을 생성하고 있습니까? – LukeHennerley

+0

한 달에서 한 해 사이의 구분 기호가 공백 인 경우 왜 쉼표로 분리합니까? –

답변

4

Linq를 사용하여 하나의 방법이다. Select에서 나는 DateTimes에서 ListItems을 만듭니다 (오늘부터 시작하여 각 루프를 1 개월 뒤로). ToString은 datetime을 지정된 형식의 문자열로 변환하는 형식 문자열을 사용합니다.

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

dropdownlist 옵션에 value = "nov 2012"가 아닌 몇 개월 동안 값 1 - 12를 넣을 수 있습니까? – sindrem

+0

@sindrem : 텍스트를 ** 및 ** ListItems 값으로 설정하는 방법을 보여주기 위해 내 대답을 편집했습니다. –

+0

귀하의 LINQ-fu는 젊고 강합니다. 좋은 깨끗하고 간결한 솔루션. – pseudocoder

관련 문제