- PR -

SmartNavigationの画面でJavaScriptエラーが発生する

1
投稿者投稿内容
51
常連さん
会議室デビュー日: 2004/05/20
投稿数: 31
投稿日時: 2004-12-16 16:18
いつもお世話になっております。51と申します。
現在、ASP.Net(C#)で開発を行っているのですが、表題の件で困っております。

今回、行いたいことは以下の通りです。
---------------------------------------------------------------------
@メインの画面から子画面を開き、社員名を検索、選択して閉じる
 #閉じる時に親画面に選択した社員名がセットされる
Aメイン画面で検索を行う
---------------------------------------------------------------------

これを行うために
メイン画面よりwindows.openで子画面を開き、
子画面をCloseするときにJavaScriptで親画面にセットしています。

@メイン画面を開く
A子画面を開き、社員を選択
B子画面を閉じる(メイン画面に社員名セット)
C検索ボタン押下(POSTBACK発生)
D再び、子画面を開き、社員を選択
E子画面を閉じる(メイン画面に社員名セット)<-------------------エラー発生!!

このように動作させると、
Bでは普通に動作するのですが、Eのjavascriptで「オブジェクトがありません」という
エラーが発生します。
SmartNavigationをFalseにすると、エラーは発生しないのですが、
スクロールを保持したいため、違う方法で回避したいと思っております。

ご参考までにJavaScript部分のコードです
-----------------------------------------------------------------------
System.Text.StringBuilder stbJS = new System.Text.StringBuilder();
stbJS.Append("<script language=javascript>");
stbJS.Append("{");
stbJS.Append("window.opener.frmMain.txtStaffName.value;);
stbJS.Append("window.close();");
stbJS.Append("}");
stbJS.Append("</script>");
RegisterStartupScript("StaffWin",stbJS.ToString());
※↑Response.Writeにしても同様の事象が発生します。
-----------------------------------------------------------------------

お心当たりのある方がいらっしゃいましたら、ご教授下さい。
どうぞ宜しくお願い致します。




たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-16 17:17
親画面も子画面もASP.NETですか?
そのコードはStartupScriptとなっているみたいですが、どこに書きましたか。

_________________
たつごろー
codeseek
こみゅぷらす
51
常連さん
会議室デビュー日: 2004/05/20
投稿数: 31
投稿日時: 2004-12-16 17:28
たつごろーさんお返事ありがとうございます。

>親画面も子画面もASP.NETですか?

どちらもASP.Netです。

>そのコードはStartupScriptとなっているみたいですが、どこに書きましたか。

子画面で社員名を選択して、OKボタンを押します。
そのOKボタンのクリックイベントで記述しています。

どうぞよろしくお願い致します。

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-16 17:30
SmartNavigationをtrueにしてもエラーになりませんでした。
提示されたスクリプトは閉じるボタンが押されたときだけ呼び出されるように修正しました。
bJS.Append("window.opener.frmMain.txtStaffName.value;);
の部分は値を渡すように書き換えました。

提示された以外のなにかが関係しているかもしれない。

_________________
たつごろー
codeseek
こみゅぷらす
51
常連さん
会議室デビュー日: 2004/05/20
投稿数: 31
投稿日時: 2004-12-16 17:31
自己レスです。

回避方法が一つみつかりました。
出力しているscriptを
stbJS.Append("window.opener.frmMain.txtStaffName.value;);

stbJS.Append("window.opener.document.all('txtStaffName').value;);
と書き換えるとエラーが発生しなくなります。
フォーム名が問題なのでしょうか・・・。

とりあえずの回避策は見つかりましたが、
何故このようなことになるのか、全く分かりませんので、
引き続き心当たりのある方がいらっしゃいましたら、
ご教授の程、どうぞよろしくお願い致します。
1

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