|
分類:[ASP.NET (C#)]
お世話になります。
カレンダーから日付を選択してテキストボックスに表示するという
処理を作っているのですが、マスターページを使わない単体のページなら
思い通りの動作をするのにマスターページを使ったページだと思い通りに
動作しなくて困っています。(ContentPlaceHolder内のページ)
●カレンダー選択aspxの作り
Calenderコントロール(ID:cal)を貼り付けて、その下に
<script type="text/javascript" language="javascript">
<!--
<asp:Literal ID="ltrScript" runat="server"></asp:Literal>
//-->
</script>
と記述しておきます。
●呼び出し元のボタン
OnClientClick='window.open("Calendar.aspx", "", "width=230, height=200,resizable=no, statusbar=no, toolbar=no");return false;'
と記述して、ボタン押下で上記のページを開きます。
このボタンコントロールは、マスターページを持つコンテンツページ内に配置されています。
●カレンダー選択aspxの処理
SelectionChanged()を追加して、以下のような処理を入れます。
System.Text.StringBuilder builder = new System.Text.StringBuilder();
builder.Append("opener.document.forms[0].TextBox1.value='");
builder.Append(cal.SelectedDate.ToString("yyyy/MM/dd"));
builder.Append("';self.close();");
ltrScript.Text = builder.ToString();
っとすると、呼び出し元フォームのTextBox1に選択した日付が入るのですが
マスターページを使った場合は、日付が入らずカレンダーも閉じない状態になります。
閉じられないカレンダーのソースを見ると目的のJavaScriptは吐き出されています。
JavaScriptも、昨日今日はじめたばかりの人間なので、調べながらやっているのですが、
opener.document.forms[0].TextBox1.value=
~~~~~~~~~~~~~~~~~~ この部分が問題のような気がしたので
opener.document.form1.TextBox1.value= とか(VS2005上でのマスターページのform IDを指定)
opener.document.form1.ContentPlaceHolder1.TextBox1.value= とか
opener.document.forms['aspnetForm'].TextBox1.value= とか(ブラウザ上で見た時のform ID)
手探りで色々変えてやってみたのですがダメでした。
self.close();だけにすると、カレンダー選択のページは閉じます。
マスターページを使用している場合、JavaScriptからのコントロールの参照方法は
やり方が違うのでしょうか?
よろしくお願いします。
|