2015-05-13 1 views
0

Я пытаюсь заполнить dropdown с No.of days порожденного system следующим кодомСформировать 29 дней февраля в .NET

Sub LoadDay() 
     Try 
      ddlDay.Items.Clear() 
      For i As Integer = 1 To System.DateTime.DaysInMonth(DateTime.Today.Year, ddlMonth.SelectedValue) 
       ddlDay.Items.Add(New ListItem(i.ToString(), i.ToString("00"))) 
      Next 
      ddlDay.Items.Insert(0, New ListItem("--Select--", -999)) 
     Catch ex As Exception 
     End Try 
    End Sub 

Проблема, в феврале месяце он показывает только 28 дней, потому что следующий код создает Days на основе текущего года и в этом году не високосный

System.DateTime.DaysInMonth(DateTime.Today.Year, ddlMonth.SelectedValue) 

Как я могу это исправить, чтобы всегда показывать 29 дней в течение месяца Februaray?

+5

'System.DateTime.DaysInMonth (2000, ddlMonth.SelectedValue)'? – erikkallen

+0

@erikkallen: Ницца, простые хаки - лучшие. –

+1

Вы должны удалить этот пустой блок catch из своего кода. Считается, что это не так просто. – Kratz

ответ

0

Вы можете использовать DayInMonth в DateTime

Dim dayinMonth As String 
dayinMonth = System.DateTime.DaysInMonth(2012, 2) 

Это позволит вам узнать день в месяц на 2015 год февраль. Параметр внутри стенда на год и месяц

0

Мне было бы интересно узнать, в чем заключается ваша просьба, чтобы вы могли выбирать недействительные дни, но если вы не хотите, чтобы ваши дни менялись в зависимости от года, просто создайте свой собственный массив дней. Это оставляет ваше намерение более понятным, чем случайный год в функции DaysInMonth.

  Dim Days = {31,28,31,30,31,30,31,31,30,31,30,31} 
      ddlDay.Items.Clear() 
      For i As Integer = 1 To Days(ddlMonth.SelectedValue-1) 
       ddlDay.Items.Add(New ListItem(i.ToString(), i.ToString("00"))) 
      Next 
      ddlDay.Items.Insert(0, New ListItem("--Select--", -999)) 

 Смежные вопросы

  • Нет связанных вопросов^_^