- PR -

子画面から別フレームに対しての更新

1
投稿者投稿内容
ちびぐま
常連さん
会議室デビュー日: 2004/09/09
投稿数: 37
お住まい・勤務地: 横浜市
投稿日時: 2007-01-23 16:08
下記の図のような遷移で、BBBフレーム内のボタン(複数あります)をクリックすると入力用子画面が表示され、子画面の【閉じる】ボタンをクリックすると子画面が閉じられ、AAA画面に子画面で入力した内容が表示される、というものを作成したいのですが、子画面からAAAフレームに対してうまくPage_load イベントを発生することができません。
子画面から親フレーム(BBB)でない別のフレーム(AAA)のPage_load イベントを発生されるにはどうしたらいいのでしょうか。
不可能であれば、何か別の方法がありませんか?
よろしくお願いいたします。

+-------+-------+
| | |
| AAA | BBB |
| | |
| | +--+ |
| | | | |
| | +--+ |
+-↑----+---↓--+
↑ ↓
↑ +-----+
↑ | CCC |
↑ | +-+ |
←←←←←| | |
| +-+ |
+-----+
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2007-01-23 16:53
状況がはっきりつかめないので、憶測になりますが・・・。
[AAA]と[BBB]は同一ウィンドウ内に並ぶフレームのページということであっていますか?
(これが違うと下記の回答は意味をなさなくなります。)

上記見解で回答させていただくとすれば、「Page_Loadを発生させたい。」ということは、つまりページを再読み込みさせればいいわけですよね?
[AAA]フレームにフレーム名をつけて、子画面を閉じるときに該当フレームを指定してページの再読み込みを行えば実現できそうですが、いかがでしょうか?
ちびぐま
常連さん
会議室デビュー日: 2004/09/09
投稿数: 37
お住まい・勤務地: 横浜市
投稿日時: 2007-01-23 17:23
KIMERAさん、ご返信ありがとうございます。

>[AAA]と[BBB]は同一ウィンドウ内に並ぶフレームのページということであっていますか?
あっています。

子画面からみると親は[BBB]となります。そのため、子画面から[AAA]をたどるには、子画面→[BBB](親)→フレーム全体→[AAA]となると思うのですが、間違っていますでしょうか?
このため、子画面からどうやると[AAA]の「Page_Loadを発生させる」といのをどうやっていればよいのかわからなかった次第です。
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2007-01-23 18:20
操作方法がわからない。ということでしょうか?
JavaScriptを使うと実現できます。
コードそのまま書いてしまいますが、ブラウザ依存などがないかお確かめください。

子画面で閉じるボタンを押されたときに、
window.opener.parent.AAA.location.href('AAA.aspx');
というスクリプトを流せばできます。

スクリプトを見ていただければわかるかと思いますが、
windowが自分自身をさして、openerがBBB画面、parentはフレーム全体というように、順番に上っていったところで、フレーム全体が握っているAAA画面をさしてページ遷移を行う。
といった仕組みです。
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2007-01-23 18:24
すみません、念のために追記です。

上記のようにAAA画面を名前指定するばあい、フレームページのインナーフレームに名前を定義づけておかないといけません。

<IFRAME name="AAA src="AAA.aspx"></IFRAME>

となっていることが条件です。
その他、応用したやり方は色々とありますので、調べてみてください。
ちびぐま
常連さん
会議室デビュー日: 2004/09/09
投稿数: 37
お住まい・勤務地: 横浜市
投稿日時: 2007-01-23 19:25
KIMERAさん、ご返信ありがとうございます。

できました。
window.opener.parent.AAAとたどれるのですね。
とても勉強になりました。
ありがとうございました。
1

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