dポイントプレゼントキャンペーン実施中!

開発環境
Visual Web Developer 2008 Express Edition(言語はVB.NET)

「年」「月」「日」のプルダウンと「曜日」を表示するラベルが配置された画面を作ろうとしています。
年と月のプルダウンに関しては、2000~2020年・1~12月までをhtmlで追加してやれば良いのですが、
たとえば、
2000年の1月を選択したらポストバックして2000年1月に存在する日を「日」のプルダウンに表示させ、さらに、日付のプルダウンで28日と選択したらそれに対応する曜日をラベルに表示させる、
といった場合にはどのようなコードを書けば可能でしょうか?
宜しくお願い致します。

A 回答 (1件)

『年』『月』のプルダウンのイベントとしてはSelectedIndexChangedを使えばいいでしょう


『日』はPreRenderイベントでいいと思いますよ
たとえば 年がDDLYear 月がDDLMonth 日がDDLDay 曜日がLBLDaysといったIDならば

Protected Sub DDLYear_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DDLYear.SelectedIndexChanged
  ' 2月なら閏日があるかもしれないのでDDLDayを更新
  If DDLMonth.SelectedValue = 2 Then
    DDLDay.Items.Clear()
  End If
End Sub

Protected Sub DDLMonth_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DDLMonth.SelectedIndexChanged
  ' 月の変更時は DDLDayを更新
  DDLDay.Items.Clear()
End Sub

Protected Sub DDLDay_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles DDLDay.PreRender
  Dim dt As Date
  If DDLDay.Items.Count = 0 Then
    ' 日の更新時の処理
    ' 選択年月の1日の日付を生成
    dt = New Date(CInt(DDLYear.SelectedValue), CInt(DDLMonth.SelectedValue), 1)
    ' 翌月の前日つまり指定の月末を取得
    dt = dt.AddMonths(1).AddDays(-1)
    For n As Integer = 1 To dt.Day
      DDLDay.Items.Add(n.ToString)
    Next
  End If
  ' 選択年月日の日付を生成
  dt = New Date(CInt(DDLYear.SelectedValue), CInt(DDLMonth.SelectedValue), CInt(DDLDay.SelectedValue))
  ' 曜日の表示を更新
  LBLDays.Text = dt.ToString("ddd")
End Sub

# コードの中の字下げ(インデント)には全角スペースを使用しています
# エラーになるようなら置換してください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!