Calendarコントロールで1つ前の選択日付になる

解決


hin  2005-09-27 03:49:22  No: 125737

Framework1.1 VB.netにて、ウェブアプリケーションを開発しています。

CalendarコントロールのSelectedDateで取得した日付が1つ遅れてしまいます。
原因は、Page_Loadの時点では、まだ選択されていないようでPage_PreRenderにSelectedDateと書くと、選択した日付が取得できます。

Page_PreRenderに記述する以外に対策は無いのでしょうか?


我龍院忠太  2005-09-27 06:18:29  No: 125738

CalendarのSelectionChangedで取得するのではだめなんですね。


我龍院忠太  2005-09-27 16:49:10  No: 125739

その後確かめたら全く問題は無さそうです。 
  
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            Calendar1.SelectedDate = Now()
        End If
    End Sub

    Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Calendar1.SelectionChanged
        TextBox1.Text = Calendar1.SelectedDate
    End Sub

表示の為のTextBoxは追加してありますが。


hin  2005-09-27 23:56:08  No: 125740

Calendar.SelectedDateの値に基づいて作成したオブジェクトに対して、動的イベントを設定しているので、どうしてもPage_Loadの時点でCalendarコントロールの変更後の日付を取得したいのですが、このような考え方その物が間違っているのでしょうか。

呼び出される順序が以下のようになっていました。

Page_Load
    ↓
Calendar1_SelectionChanged
    ↓
Page_PreLoad

動的にイベントハンドラを設定した場合、Page_Loadの直後にその結びつけが行われるようで、困って居ます。


我龍院忠太  2005-09-28 01:39:32  No: 125741

うーむ、可能なのかな?
カレンダーの日がクリックされるとポストバックが発生して、ページのリロードが行われ、
Page_Loadが行われた後、CalendarのSelectイベントが発生しますからね。
バッチイ(^^;  プログラムとしては、Calendar1_SelectionChangedで再びPage_Loadを発生させる
手は有りますが。
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     TextBox1.Text = Calendar1.SelectedDate.ToString
End Sub
Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
     Handles Calendar1.SelectionChanged
     Page_Load(sender, e)
End Sub
こんなコード書いてると怒られそうだな。。。。


hin  2005-09-30 04:00:32  No: 125742

そうなんですよね・・・。

とりあえず現状、Page_LoadをCalendar_SelectionChanged内で再度呼び出して、なんとか動いています。(悲)

やはり、Windows.Formのイベントハンドラの様にはいかないものですね・・・。

とりあえず解決としておきます。
また、解決策がありましたらよろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加