- ボルビ
- ベテラン
- 会議室デビュー日: 2007/05/23
- 投稿数: 52
|
投稿日時: 2007-08-28 11:10
いつもお世話になっています。
環境:Visual Studio2005
CalendarExtenderはボタン or テキストボックスをクリックで
表示されるという例はたくさんあるんですが、画面が表示された時に
Calendarを表示したいといったことは可能なのでしょうか?
色々と試してみたんですが上手く動いてくれなく、
AjaxControlToolkitのソースを修正してみたんですが、修正箇所が
正しくないのか動いてくれません。
ご教授御願いいたします。
|
- chack
- 常連さん
- 会議室デビュー日: 2002/11/18
- 投稿数: 48
- お住まい・勤務地: 埼玉県
|
投稿日時: 2007-08-28 16:06
引用: |
|
CalendarExtenderはボタン or テキストボックスをクリックで
表示されるという例はたくさんあるんですが、画面が表示された時に
Calendarを表示したいといったことは可能なのでしょうか?
|
CalendarExtender は、TargetControlID に指定したコントロールが
フォーカスを得た時にポップアップされる仕様です。
CalendarExtender を使うのであれば、AJAX Control Toolkit のソースを
修正しなくても、ひとまず以下のコードで実現できると思います。
コード: |
|
<form id="form1" runat="server">
<ajaxToolkit:ToolkitScriptManager
ID="ScriptManager1"
runat="server"
EnableScriptGlobalization="True"
EnableScriptLocalization="True" />
<script type="text/javascript">
function pageLoad()
{
$get("TextBox1").focus();
}
</script>
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender
ID="CalendarExtender1"
runat="server"
TargetControlID="TextBox1">
</ajaxToolkit:CalendarExtender>
</div>
</form>
|
ページロードされた時からカレンダーを表示するのであれば、
CalendarExtender を使わなくても、Calendar コントロールで事足りそう
な気もしないでもないですけど・・・
ご参考までに。
|
- ボルビ
- ベテラン
- 会議室デビュー日: 2007/05/23
- 投稿数: 52
|
投稿日時: 2007-08-28 18:31
回答有難うございます。
引用: |
|
chackさんの書き込み (2007-08-28 16:06) より:
CalendarExtender は、TargetControlID に指定したコントロールが
フォーカスを得た時にポップアップされる仕様です。
CalendarExtender を使うのであれば、AJAX Control Toolkit のソースを
修正しなくても、ひとまず以下のコードで実現できると思います。
|
JavaScriptでテキストボックスにfocusを設定するのは試したんですが
動かなかったんですよね。chackさん動いてるんですよね〜何か違いがあるのかな??
試したコードを下記に記します。
コード: |
|
<html>
<head id="Head1" runat="server">
<title>無題のページ</title>
<script type="text/javascript" language="javascript">
function pageLoad()
{
$get("e1").focus();
}
</script>
</head>
<body onload="pageLoad();">
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True" EnableScriptLocalization="True">
</asp:ScriptManager>
<asp:TextBox ID="e1" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="e1" Format="yyyy/MM/dd" />
</div>
</form>
</body>
</html>
|
引用: |
|
ページロードされた時からカレンダーを表示するのであれば、
CalendarExtender を使わなくても、Calendar コントロールで事足りそう
な気もしないでもないですけど・・・
ご参考までに。
|
CalendarExtenderを使う理由は月選択、年選択の機能を使いたかったからです。
|
- chack
- 常連さん
- 会議室デビュー日: 2002/11/18
- 投稿数: 48
- お住まい・勤務地: 埼玉県
|
投稿日時: 2007-08-28 19:03
pageLoad という名前の関数は ASP.NET AJAX では、ページロード時の
標準のイベントハンドラとして、暗黙的に実行されます。
ですので、
<body onload="pageLoad();">
の onload の記述は不要です。
<body>
として、実行してみてください。
おそらく、pageLoad 関数が2度実行されていることで、
うまくフォーカスが動作していないものと思います。
|
- ボルビ
- ベテラン
- 会議室デビュー日: 2007/05/23
- 投稿数: 52
|
投稿日時: 2007-09-01 10:30
引用: |
|
chackさんの書き込み (2007-08-28 19:03) より:
pageLoad という名前の関数は ASP.NET AJAX では、ページロード時の
標準のイベントハンドラとして、暗黙的に実行されます。
|
こういうものがあったとは知りませんでした勉強になります。
<body>にしたら画面起動時にカレンダーが表示されるようになりました。
ただテキストボックスが必ず必要になる所がちょっと痛いですね。
回答有難うございました。
|
- だんじり
- 大ベテラン
- 会議室デビュー日: 2007/08/10
- 投稿数: 155
- お住まい・勤務地: 神奈川県
|
投稿日時: 2007-09-01 11:52
ボルビさん
画面が表示された時にCalendarを表示したいのなら「MonthCalendar」コントロールは
いかがでしょうか。このCalendar は常時表示が原則です。
時間の取得はMonthCalendar1_DateChangedイベントで次のようにして取得します。
時間変数 = Me.MonthCalendar1.SelectionRange.Start
[ メッセージ編集済み 編集者: だんじり 編集日時 2007-09-01 12:04 ]
|