- PR -

CalendarExtenderコントローラについて-2

1
投稿者投稿内容
ボルビ
ベテラン
会議室デビュー日: 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 ]
1

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