- PR -

2つのiframe間の画面制御

投稿者投稿内容
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2003-06-09 22:45
ページ内に上下2つのiframeを配置しています。

上のiframe内にあるtop.aspxのDataGridの選択ボタンをクリックすると
下のiframe内にあるbottom.aspxのDataGridを再表示したいと思っていますが
うまくいきません。

top.aspxのformタグのtarget属性に下のiframeのフレーム名を入れると
下のiframeにtop.aspxの内容が表示されてしまいます。

なんとかtop.aspxのpostbackと同時にbottom.aspxも更新したいのですが
なにかいい方法があるでしょうか?

よろしくお願いします。
TomScissors
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 79
投稿日時: 2003-06-10 10:10
top.aspxのFormを以下のようにして、
<Form METHOD="post" target="bottom(仮)" ACTION="bottom.aspx">
bottom.aspxのPage_Loadで処理するのはどうですか。
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2003-06-10 13:45
Tomscissorsさん、ありがとうございます。

試したのですが、今度は上のiframeには何も表示されなくなりました。
下のiframeにはbottom.aspxが表示されるのみです。

他に方法はありますでしょうか?
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2003-06-10 13:59
ちょっと間違えました。

Tomscissorsさんのやり方の結果
post後、上下のiframeにtop.aspxが表示されている状態で
下のiframeにpost後のtop.aspxが表示されてしまいます。

よろしくお願いします。
TomScissors
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 79
投稿日時: 2003-06-10 15:38
すみません、そういえば上の処理はtop.aspxのformタグがrunat="server"だと実行できなかったと思います。
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2003-06-10 19:25
上記のやり方が正解だと思います。DataGridのSelectイベント内で、Context.Itemsに選択された行の情報を詰め込んだ後、目的のページ(bottom.aspx?)にServer.Transferすれば良いと思います。bottom.aspxでは、PageLoad時に、Context.ItemsとContext.Handlerから自分が呼び出された経緯と目的を確認し、目的に合ったDataGridを表示すると良いと思います。

追記。。。FormタグでTargetを指定したときは、Targetで指定された先で、PostBackが発生します。だから、シングルフォームの時と同様にイベントを取得して、Server.Transferしてやれば良いということです。。。親切に説明できなくてごめんなさい。。。

[ メッセージ編集済み 編集者: GUNNM 編集日時 2003-06-10 19:27 ]
ぬるぴょん
ベテラン
会議室デビュー日: 2003/06/02
投稿数: 62
投稿日時: 2003-06-10 20:42
GUNNMさん、ありがとうございます。

top.aspxのSub DataGrid1_SelectedIndexChangedに
Server.Transfer("bottom.aspx")を記述してうまくいきました。
ありがとうございます。

ただ

この場合、DataGridの選択時に仕込んであるscriptが実行されないんです。
(以前、GUNNMさんに教えてもらったDataGridの任意の場所をクリックして
選択状態にするコード)

値は取得できているので、見た目が選択状態になっていない(反転していない)
だけだと思いますが・・・
GUNNM
常連さん
会議室デビュー日: 2002/01/23
投稿数: 30
お住まい・勤務地: 横浜
投稿日時: 2003-06-10 23:22
話題がそれていきそうで怖いですねw
スクリプトが走らないのは、TOPとBottomどちらですか?
私の場合、ダブルクリックでPostBackさせていたので、シングルクリックで行に色がつくようにしていました。よって、色をつけていたのは、シングルクリック時に、JavaScript、PostBack時には、ServerSideです。。。

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