C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 50 を表示中)
■27369 / )  マスターページを使った場合のJavaScriptからの参照
□投稿者/ ロック (133回)-(2008/11/04(Tue) 21:06:13)

分類:[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からのコントロールの参照方法は
やり方が違うのでしょうか?
よろしくお願いします。

返信 編集キー/


管理者用

- Child Tree -