■53395 / inTopicNo.3) |
Re[2]: カレンダの日付クリックでConfirmを表示したい |
□投稿者/ akira (10回)-(2010/09/12(Sun) 09:18:54)
|
■No53390 (もりお さん) に返信
> ブラウザでページのソースを見ていただくとわかるのですが、
> Calendar コントロールは table タグとして出力されます。
> 各日付は a タグとして出力されます。
>
> 日付の a タグに confirm のスクリプトを登録するとよいかと思います。a タグをコードで
> 取得する手立てはなさそうなので Cell の中身を入れ替える作戦でいかがでしょうか。
もりおさん、早急に的確なアドバイス本当にありがとうございます。
目的通りの動作が出来る様になりました。感謝です。
今回、ASP.NETが生成するhtmlをながめてみる。と言うワザを覚えました。
目的通り動くようになったコードを添付しておきます。
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
If e.Day.IsToday Then
e.Cell.Controls.Clear()
e.Cell.Controls.Add(createTodayLink(e))
End If
End Sub
Protected Function createTodayLink(ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) As HtmlAnchor
Dim TodayLink As New HtmlAnchor()
TodayLink.HRef = e.SelectUrl
TodayLink.InnerText = e.Day.DayNumberText
TodayLink.Title = e.Day.Date.ToString("m", Globalization.CultureInfo.CurrentCulture)
TodayLink.Attributes("onclick") = "return confirm('本当に移動しますか?');"
Return TodayLink
End Function
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
If Calendar1.SelectedDate.ToString("yyyy/MM/dd") = Now().ToString("yyyy/MM/dd") Then
Response.Redirect("http://www.atmarkit.co.jp/fdotnet/")
Else
TextBox1.Text = Calendar1.SelectedDate.ToString("yyyy/MM/dd")
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged" OnDayRender="Calendar1_DayRender"></asp:Calendar>
<br />
</div>
</form>
</body>
</html>
|
解決済み
|