あちこちサンプルはあるんですが、まとまった情報がなかったので自分用にメモしておきます。
Calendarを使用した日付入力
参考サイトはコチラ。@IT [ASP.NET AJAX]MaskedEditコントロールでテキストボックスに入力可能な値を制限するには?[2.0、3.0、3.5、C#、VB]
@IT [ASP.NET AJAX]Calendarコントロールで日付入力ボックスを定義するには?[2.0のみ、C#、VB]
サンプルとして以下のような画面を作成してみます。
テキストボックスには日付を入力することもカレンダーから日付を選択することもできます。
日付以外を入力するとエラーが表示されます。
まずはDefault.aspxのソースです。
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="Calendar._Default" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style> .cal_Theme1 .ajax__calendar_container { background-color: #e2e2e2; border: solid 1px #cccccc; } .cal_Theme1 .ajax__calendar_header { background-color: #ffffff; margin-bottom: 4px; } .cal_Theme1 .ajax__calendar_title, .cal_Theme1 .ajax__calendar_next, .cal_Theme1 .ajax__calendar_prev { color: #004080; padding-top: 3px; } .cal_Theme1 .ajax__calendar_body { background-color: #e9e9e9; border: solid 1px #cccccc; } .cal_Theme1 .ajax__calendar_dayname { text-align: center; font-weight: bold; margin-bottom: 4px; margin-top: 2px; } .cal_Theme1 .ajax__calendar_day { text-align: center; } .cal_Theme1 .ajax__calendar_hover .ajax__calendar_day, .cal_Theme1 .ajax__calendar_hover .ajax__calendar_month, .cal_Theme1 .ajax__calendar_hover .ajax__calendar_year, .cal_Theme1 .ajax__calendar_active { color: #004080; font-weight: bold; background-color: #ffffff; } .cal_Theme1 .ajax__calendar_today { font-weight: bold; } .cal_Theme1 .ajax__calendar_other, .cal_Theme1 .ajax__calendar_hover .ajax__calendar_today, .cal_Theme1 .ajax__calendar_hover .ajax__calendar_title { color: #bbbbbb; } </style> </head> <body> <form id="form1" runat="server"> <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization="True" /> <div> <asp:TextBox ID="txtDate" runat="server" Width="100" /> <asp:MaskedEditExtender ID="meeDate" runat="server" TargetControlID="txtDate" Mask="9999/99/99" MaskType="Date" UserDateFormat="YearMonthDay" /> <asp:ImageButton ID="imgbtnCalendar" runat="server" ImageUrl="~/image/calendar.png" OnClientClick="return false;" /> <asp:CalendarExtender ID="ceDate" runat="server" Format="yyyy/MM/dd" TargetControlID="txtDate" PopupButtonID="imgbtnCalendar" CssClass="cal_Theme1" /> <asp:TextBox ID="TextBox1" runat="server"/> <asp:Button ID="btnExec" runat="server" Text="送信" /> <br /> <asp:RangeValidator ID="vranDate" runat="server" ControlToValidate="txtDate" Display="Dynamic" Type="Date" MinimumValue="1900/01/01" MaximumValue="9999/12/31" ErrorMessage="正しい日付を入力して下さい。"/> </div> </form> </body> </html>
まずはToolkitScriptManager を配置します。
カレンダーを日本語表示するためにEnableScriptGlobalizationプロパティをTrueに設定します。
日付を入力するためのテキストボックスを配置します。(ID:txtDate)
テキストボックスに日付入力の制限をかけるために、MaskedEditExtenderを配置します。(ID:meeDate)
以下のプロパティを設定します。
TargetControlID="txtDate"
Mask="9999/99/99"
MaskType="Date"
UserDateFormat="YearMonthDay"
カレンダーを表示するためのImageButtonを配置します。(ID:imgbtnCalendar)
OnClientClick="return false;"を設定し、サーバーサイドの処理を発生させないようにします。
カレンダーとなるCalendarExtenderを配置します。(ceDate)
以下のプロパティを設定します。
Format="yyyy/MM/dd"
TargetControlID="txtDate"
PopupButtonID="imgbtnCalendar"
CssClass="cal_Theme1"
※CssClassは別に設定しなくてもいいです。
「CalendarExtender css」で検索すると、いろいろ見つかります。
フォーカス移動させるためのTextBox(ID:TextBox1)と送信ボタン(ID:btnExec)を配置します。
日付が正しい形式であるかを検証するためにRangeValidatorを使用します。(ID:vranDate)
以下のプロパティを設定します。
ControlToValidate="txtDate"
Type="Date"
MinimumValue="1900/01/01"
MaximumValue="9999/12/31"
ErrorMessage="正しい日付を入力して下さい。"
以上でカレンダーを使用した日付入力の完成です。
0 件のコメント:
コメントを投稿