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

解決


hin  2005-09-26 18:49:22  No: 125737  IP: [192.*.*.*]

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

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

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

編集 削除
我龍院忠太  2005-09-26 21:18:29  No: 125738  IP: [192.*.*.*]

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

編集 削除
我龍院忠太  2005-09-27 07:49:10  No: 125739  IP: [192.*.*.*]

その後確かめたら全く問題は無さそうです。 
  
    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 14:56:08  No: 125740  IP: [192.*.*.*]

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

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

Page_Load
    ↓
Calendar1_SelectionChanged
    ↓
Page_PreLoad

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

編集 削除
我龍院忠太  2005-09-27 16:39:32  No: 125741  IP: [192.*.*.*]

うーむ、可能なのかな?
カレンダーの日がクリックされるとポストバックが発生して、ページのリロードが行われ、
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-29 19:00:32  No: 125742  IP: [192.*.*.*]

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

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

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

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

編集 削除