- ベストアンサー
プルダウンで日付と曜日を取得する
- 年と月のプルダウンに関しては、2000~2020年・1~12月までをhtmlで追加してやれば良いのですが、たとえば、2000年の1月を選択したらポストバックして2000年1月に存在する日を「日」のプルダウンに表示させ、さらに、日付のプルダウンで28日と選択したらそれに対応する曜日をラベルに表示させる、といった場合にはどのようなコードを書けば可能でしょうか?
- 開発環境はVisual Web Developer 2008 Express Edition(言語はVB.NET)です。年と月のプルダウンに関しては、2000~2020年・1~12月までをhtmlで追加してやれば良いのですが、日付のプルダウンに関しては、選択された年と月に存在する日数を判定し、該当する日数を「日」のプルダウンに表示させる必要があります。さらに、日付のプルダウンで選択された日に対応する曜日を求めて、ラベルに表示させる必要があります。
- 開発環境はVisual Web Developer 2008 Express Edition(言語はVB.NET)です。年と月のプルダウンに関しては、htmlで2000~2020年・1~12月までの項目を作成します。日付のプルダウンに関しては、選択された年と月に存在する日数を判定し、該当する日数を「日」のプルダウンに表示させる必要があります。また、日付のプルダウンで選択された日に対応する曜日を求めて、ラベルに表示させる必要があります。
- みんなの回答 (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 # コードの中の字下げ(インデント)には全角スペースを使用しています # エラーになるようなら置換してください