• ベストアンサー

テキストボックスのクリックでカレンダー表示

ASP.NET C# VisualStudio2005 Webページ上でテキストボックスをクリックしたらカレンダーを表示させ カレンダーの日付をクリックでそのテキストボックスに日付を挿入させたいのですが テキストボックスのクリックでカレンダーを表示させる部分のやり方がわかりません。 テキストボックスのプロパティでAutoPostBackをtrueにしてみましたが テキストボックスのクリックだけではページを再読み込みするような状態になりませんでした。 WebCalendar for .NETのC1WebCalendarコントロールやASP.NET AJAX Control Toolkitのような 後から追加するコントロール類は使ないのですが、なにかよい方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Rel
  • ベストアンサー率70% (7/10)
回答No.3

ANo.2です 紹介のあった、HPを見てみました ↓ http://www.kawa.net/works/js/jkl/calender.html 遊んでみましたが、簡単に実装できましたよ! こんな感じでしょうか?↓ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!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> <!-- 読み込むJavaScriptの指定 //--> <script type="text/javascript" src="jkl-calendar.js" charset="Shift_JIS"></script> <script type="text/javascript" src="jkl-opacity.js" charset="Shift_JIS"></script> </head> <body> <!-- カレンダインスタンスの作成 //--> <script type="text/javascript"> var cal1 = new JKL.Calendar("calid","form1","colname"); </script> <form id="form1" runat="server"> <div> <!-- クリック時のメソッド --> <!-- チェンジ時のメソッド --> <input id="Text1" name = "colname" onclick="cal1.write();" onchange="cal1.getFormValue(); cal1.hide();" style="z-index: 101; left: 11px; position: absolute; top: 10px" type="text" /> <br /> <!-- カレンダの表示場所 //--> <div id = "calid"></div> </div> </form> </body> </html> VS2005のデザインからは「HTML」タブのInput(Text)を組み込めば JavaScriptが使えるようです。 (私もJavaScript良く知りませんが ^^;) がんばってくださいませ

kobupon
質問者

お礼

おお、ありがとうございます! テーブルの中に入れるとちょっと変な動きになりましたが工夫すればなんとかなりそうな気がします。 少ない情報から意図を汲み取って回答して頂き感謝しています。 どうもありがとうございました。

その他の回答 (2)

  • Rel
  • ベストアンサー率70% (7/10)
回答No.2

はじめまして ASP.NET C# でしたら、TextBoxなどのイベントは サーバー側(IIS)で処理されます。 TextBoxには、Clickイベントが無いので JavaScriptを埋め込んで、クライアント(IEなど)で Click時の処理(カレンダ表示など)をしてしまおう というのが、「redfox63」さんの回答だと思われます。 個人的な意見では、  「JavaScriptが判らない」  「AjaxToolKitが組み込めない」 と言う事であれば、仕様を見直してはいかがでしょう? 例えば...テキストボックスの右横に、ボタンをつけて、カレンダーを開くとか? (イメージボタンにして、カレンダアイコンを付ければ、それらしく見えると...) TextBoxクリックにこだわるなら、JavaScriptなどを組み込み必要があるでしょう

kobupon
質問者

補足

アドバイスありがとうございます。 > TextBoxには、Clickイベントが無いので > JavaScriptを埋め込んで、クライアント(IEなど)で > Click時の処理(カレンダ表示など)をしてしまおう > というのが、「redfox63」さんの回答だと思われます。 なるほど、砕いた説明ありがとうございます。 しっかり理解できました。 > 例えば...テキストボックスの右横に、ボタンをつけて、カレンダーを開くとか? その方法だととっても簡単なんですけどね。 JavaScriptを勉強しながらでも(時間はないんですが)TextBoxクリックにこだわってやらないといけないんです。 http://www.tohoho-web.com/js/index.htm 上記サイトの基本編を見たら記述がC言語っぽいのでJavaScriptも 簡単なものならなんとかなるかもと思い、チャレンジしています。 http://www.kawa.net/works/js/jkl/calender.html このサイトのカレンダーの組み込み方がわかれば簡単に出来るとは思うんですけど、 使い方を読んでもまだ理解出来ないんです。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

クライアントスクリプトを仕込まないと無理なようです System.Web.UI.WebControls.TextBoxには Clickイベントがありませんので … TextBoxのAutoPostBackはテキストが変更されて他のコントロールにフォーカスが移動した場合にPostBackが発生します カレンダーはSystem.Web.UI.WebControls.Calenderクラスならいいのでしょうか? テキストボックスと カレンダーを配置します カレンダーのVisbleプロパティをFalseに設定します Page_Loadイベントで dim ss as String Dim cs As ClientScriptManager = Page.ClientScript ss = "<script type='text/javascript'>" & _ "function myClick() {" & _ " document.forms[0].submit();" & _ "}" & _ "</script>" if Not cs.IsClientScriptBlockRegistered("myClickScript") Then cs.RegisterClientScriptBlock(Me.GetType(), "myClickScript", ss) End If ss = "<script type='text/javascript'>" & _ " document.getElementById('TextBox1').onclick = myClick();" & _ "</script>" If Not cs.IsStartupScriptRegistered("myScript") Then   cs.RegisterStartupScript(Me.GetType(), "myScript", ss) End If ' テキストボックスがクリックされた場合の処理 If IsPostBack And Calendar1.Visible = False Then   Calendar1.Visible = True End If と記述します カレンダーの選択日付が変更された場合のイベントSelectionChangedで TextBox1.Text = Calender1.SelectedDate.ToShortDateString Calender1.Visible = False と記述します これでテキストボックスをクリックしたら カレンダーが表示 カレンダーで選択日付が変更されたらカレンダーを非表示 に出来ます 同じ日がクリックされた場合の対処や、他にポストバックするコントロールがある場合はスクリプトのmyClick()を変更する必要があるでしょう

kobupon
質問者

補足

回答ありがとうございます。 コードまで書いて頂いてとても有り難いのですが、これってVBなんでしょうか? > クライアントスクリプトを仕込まないと無理なようです > System.Web.UI.WebControls.TextBoxには Clickイベントがありませんので … 「System.Web.UI.WebControls.TextBox」とはテキストボックスの正式名でしょうか? ツールボックスの標準の中にあるTextBoxを使っています。 そのTextBoxのプロパティウィンドウでイベントを選びましたがおっしゃる通りClickイベントはありませんでした。 > カレンダーはSystem.Web.UI.WebControls.Calenderクラスならいいのでしょうか? すいません。「System.Web.UI.WebControls.Calenderクラス」とはツールボックスの中の標準の中にあるCalenderコントロールの事でいいのでしょうか? カレンダーも後から追加して使うものでなければいいのです。 ここ http://codezine.jp/a/article/aid/2037.aspx や、ここ http://www.atmarkit.co.jp/fdotnet/dotnettips/575aspajaxcalendar/aspajaxcalendar.html に紹介されているような便利なものは利用出来ないのです。 あと、コード中に「script type='text/javascript」というのが出て来ていますね。 javascriptもVB同様さっぱりわからないのです。 スタイルシートみたいな使い方なんでしょうか? 実のところC#もほとんどわからないのですが、なんとかC言語っぽく書いても「デバッグ開始」ボタンで実行出来るのでC#を使っています。 javascriptでカレンダーの表示・非表示に関しては http://www.kawa.net/works/js/jkl/calender.html 上記サイトを見つけたのですが、使い方というか組込み方というか、 わからないので使えないのです。

関連するQ&A

  • カレンダーコントロールのダイアログボックス

    ACCESSでボタンをクリックすると、カレンダーコントロールのダイアログボックスが表示されて、日付が入力出来るようにしたいのですが... この方法で日付を入力するテキストボックスに共通で使用出来たらと考えています。 カレンダーコントロールのダイアログボックスの作成から分からないのでお願いします。

  • ASP.NETのWebフォームでカレンダーを

    VS2005 ASP.NETのWebで 日付のテキストボックスをクリックすると カレンダーが表示され、テキストボックスに 2008/04/25 と表示されるようにするにはどしたらいいでしょうか?

  • カレンダーコントロールについて

    Access2003+VBA でプログラミングをしています。 他の方の質問も一通り閲覧しましたが、解決しないので教えてください。 Accessのフォーム上に貼り付けるカレンダーコントロールを使い、 カレンダーの日付をクリックして、クリックされた日付をテキストボックスに表示したいのですが、うまくいきません。 試しに、カレンダーをクリックした結果(日付)をメッセージボックスに 表示するようにもしてみましたが、やはり日付は何も表示されません。 何か根本的なところで躓いている気がするのですが、解決出来ません。 何卒、よろしくお願いします。

  • VBA_カレンダーコントロールの和暦表示

    現在、フォーム上にカレンダーコントロールを作成して クリックされた日付をテキストボックスに返すものを作成しているのですが カレンダーコントロールの年の表示は西暦になっています。 この部分を和暦にしたいのですが、いじくるところがまったく見当たりません。 何か方法はあるのでしょうか? ご教授お願いいたします<(_ _)>

  • ACCESS カレンダーコントロールで移動

    入力終了したデータをフォームに表示させているのですが、カレンダーコントロール9.0とテキストボックスをコントロールソースにして、日付が数字とカレンダーの日付が押された状態で表示されるようにしています。 レコードセレクタからいちいち任意の日付を探すのは面倒なので、出来ればカレンダーコントロールの日付をクリックまたはダブルクリックすることによりその日にレコードが移動してデータが表示させたいのですが、どのような方法があるでしょうか? 使用しているのはACCESS2000です。何卒、良い知恵がありましたら(そのような感じのことが書いてあるwebページでも構いません)宜しくお願いいたします。

  • Accessのカレンダーコントロールについて

    いつもお世話になっております。 Accessのフォーム上に貼り付けるコントロールで クリックするとカレンダーが表示され、日付を選択 することで、テキストボックスに選択した日付が 表示されるという画面を見たことがあります。 どのようにすれば、このコントロールを使えるように できるのでしょう? どうか、よろしくお願いいたします。

  • テキストボックスにカレンダー表示して入力方法

    ユーザーフォーム内のテキストボックスに日付をカレンダー表示し指定日によって入力したいのですが 方法がわかりません。どなたかご教授よろしくお願いします。

  • asp.net ajaxについて

    asp.net ajaxについて asp.net ajaxってどこからダウンロードできるのでしょうか? 下記で合ってますかね?下記だとAJAX Control Toolkitは有るんですけど。 AJAX Control Toolkitに全て含まれているんでしょうか。 ページとどこを選択していけばたどり着けるか詳細教えて下さい。 http://www.asp.net/ajax すいません。あまり良く分かってないので宜しくお願いします。

  • カレンダーについて

    お世話になります。 Web画面でテキストボックスの横にカレンダーのアイコンみたいなのがあってそれをクリックするとカレンダーが表示する入力するフォームをみました。 このような日付入力(カレンダーが表示され、日付をクリックしたらテキストボックスに選択された日付を挿入)がある入力フォームを作成するには一般的、何を使用して作成しているのでしょうか。 JavaScript? PHPで作成しようと思っています。 また参考になるサイトなど、ご存知の方がいましたらアドバイスお願いします。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • エクセルVBAのカレンダーコントロールの件で

    エクセルVBAを使用して リストボックスかコンボボックスかテキストボックスかを クリックするとカレンダーコントロールが呼び出されて カレンダーコントロールの日付をクリックすると カレンダーコントロールは閉じその値が上記2行目いずれかに 入力されるようにすることは可能なのでしょうか いろいろ文献を探してみたのですがよくわからずじまいでした よろしくお願いします

専門家に質問してみよう