- PR -

新・ポップアップカレンダーから日付を入力するには

1
投稿者投稿内容
ma
会議室デビュー日: 2002/10/08
投稿数: 4
お住まい・勤務地: 福岡
投稿日時: 2002-10-08 15:33
いつもここで勉強させて頂いております。ありがとうございます。
私のほとんどの疑問は過去ログで解決していますが、今回ひとつ教えて頂きたくて投稿しました。
以前、「ポップアップカレンダーから日付を入力するには」というスレッドで
ポップアップカレンダーで選択した日付を親ウィンドウにのテキストボックスに返す方法が解説されていましたが、親ウィンドウの”ユーザーコントロール内のテキストボックス”に返すことはできるのでしょうか?

日付を入力できるテキストボックス(ID=TextBox1)の隣りにポップアップカレンダーを表示するためのボタン(ID=Button1)を配置して、ユーザーコントロール[MyDate]を定義しました。

作成しているページは「障害対応ウィンドウ(仮)」で、障害発生日・受付日・対応日など何箇所かに[MyDate]を貼り付けます。(IDはそれぞれMyDate1、MyDate2、MyDate3とでもしておきます。)

例えば、受付日(ID=MyDate2)にカレンダーで選択した日付を表示したい時、
window.open('MyCalendar.aspx?source=MyDate2','',features);

カレンダー側は、
Dim strSource As String = Request.Params("source")
Dim strDate As String = Calendar1.SelectedDate.ToString("yyyy/MM/dd")

strScript &= "window.opener.form1." & strSource & ".proptyTextBox1.value = '" & strDate & "';"

パラメータのユーザーコントロール内のTextBox1に選択日付を設定しているつもりですが
うまくいきません。(proptyTextBox1とはTextBox1.Textの値を設定および取得するためのプロパティプロシージャのことです)

他の方法でも何でも構いませんので、ユーザーコントロール内にポップアップウィンドウからデータを設定する方法を知っている方がいらっしゃいましたら教えて下さい。よろしくお願い致します。
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2002-10-09 04:09
サーバーサイドとクライアントサイドの処理をごっちゃにされているのだと
思います。
ユーザーコントロールといっても、その実はブラウザに表示される時には
ブラウザ側ではユーザーコントロールとしては扱わず、単に個別の
テキストボックスとボタンコントロールとして扱われるだけです。
従ってASP.NETのプログラムとしてはユーザーコントロールとして
扱えますが、クライアントのブラウザで実行されるJavascriptからは
MyDateコントロールは見えません。
実際ブラウザで表示して、そのソースコードを表示して見られるとわかると
思いますが、MyDateというコントロール自体が存在するのではなく、
テキストボックスとボタンコントロールに分解されているはずです。
そのため、いくらMyDateを指定してもだめなのです。
さて、ソースコードを表示した際、該当するテキストボックスにidが
あるでしょう。
現時点ではまだ、私自身がユーザーコントロールを必要としていないので
どんなidがテキストボックスに振られるのか試したことがなくわからないの
ですが、ズバリ!このidを渡してやると表示されるようになるはずです。

解決法としては
1.ユーザーコントロール内のテキストボックスに振られるidを取得し、
 それをカレンダーがわに渡してやる(多分他の方が答えられると
 思うのでその回答をまってみては)。
2.ユーザーコントロールを使うのを止めてテキストボックスとボタンを
 個別に配置し、カレンダーがわにテキストボックスのidを渡してやる。
 (コントロールの数がすくなければ分解してもいいと思いますけど)

などが考えられるとおもいます。
ma
会議室デビュー日: 2002/10/08
投稿数: 4
お住まい・勤務地: 福岡
投稿日時: 2002-10-09 09:29
おはようございます。べーちゃんさん、ありがとうございました。
早速解決法1を試したところうまく行きました!

ユーザーコントロール内に振られるidは規則性があるのですね。
例えば、ユーザーコントロール ID=MyDate1
ユーザーコントロール内のテキストボックス ID=TextBox1
の場合、ID=MyDate1_TextBox1 というふうに・・・。

これからまだ複雑なユーザーコントロールを作成するつもりでしたが、今回の学習を参考に、ユーザーコントロールの使用が有効か否かをもう少し考えようと思います。
ありがとうございました。今後ともよろしくお願い致します。
1

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