- PR -

カレンダーコントロールの表示制御について

1
投稿者投稿内容
じゃらん
常連さん
会議室デビュー日: 2007/06/27
投稿数: 32
投稿日時: 2007-08-09 13:37
教えて下さい。

SQLテーブルより日付/タイトルを取得し、カレンダーセルにリンク(タイトルを表示)を埋め込んでいます。
又、カレンダーセルに埋め込んだリンクをクリックすることで、明細データを同一ページに表示させたいと思っています。
この時、前月を表示し、前月内のリンクをクリックするとカレンダー表示が当月に戻ってしまいます。前月表示のままにしたいのですがどのように指定すればいいのでしょうか。例えば今が8月の場合、e.Day.Dateの中身を見てみると"#7/29/2007#"となっています。e.Day.DateはReadOnlyの為、書き換えができません。

以下コード ↓

Protected Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
If e.Day.IsOtherMonth = True Then
e.Cell.Text = String.Empty
Else
SqlDataSource1.SelectParameters.Clear()
SqlDataSource1.SelectParameters.Add("sdate", e.Day.Date.ToString("yyyy/MM/dd"))
Dim reader As IDataReader = SqlDataSource1.Select(DataSourceSelectArguments.Empty)
Do While reader.Read()
Dim ltrCr As New LiteralControl("<br />")
Dim link As New HyperLink()
link.NavigateUrl = "Calendar.aspx?sdate=" & reader.GetDateTime(0)
link.Text = "■" & reader.GetString(1)
e.Cell.Controls.Add(ltrCr)
e.Cell.Controls.Add(link)
Loop
End If
End Sub

宜しくお願いします。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-08-09 17:24
ページロードでカレンダーコントロールの
SelectedDateプロパティとVisibleDateプロパティを
取得した日付に設定してやればよいのでは?
じゃらん
常連さん
会議室デビュー日: 2007/06/27
投稿数: 32
投稿日時: 2007-08-09 18:02
しょくばんさん
レスありがとうございます。

SelectionChangedイベントでSelectedDateの値をSessionに保存しておき、ページロード時にSelectedDateプロパティとVisibleDateプロパティに先ほど保存したSessionの値を入れるということですね。やってみます。

ありがとうございました。今後も宜しくお願いします。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-08-10 10:07
ん?でもPOPOさんは

>link.NavigateUrl = "Calendar.aspx?sdate=" & reader.GetDateTime(0)

としているので、セッションを使わなくても、ページロード時に

Request.QueryString["sdate"]

で日付を取得できるのでは?
じゃらん
常連さん
会議室デビュー日: 2007/06/27
投稿数: 32
投稿日時: 2007-08-13 11:19
しょくばんさん。
遅くなってすいません。

そうですね。単純にRequest.QueryString["sdate"]から日付をとればよかったんだと、投稿してから思いました。

どうもお手数おかけ致しました。
1

スキルアップ/キャリアアップ(JOB@IT)