- - PR -
2つのiframe間の画面制御
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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も更新したいのですが なにかいい方法があるでしょうか? よろしくお願いします。 |
|
投稿日時: 2003-06-10 10:10
top.aspxのFormを以下のようにして、
<Form METHOD="post" target="bottom(仮)" ACTION="bottom.aspx"> bottom.aspxのPage_Loadで処理するのはどうですか。 |
|
投稿日時: 2003-06-10 13:45
Tomscissorsさん、ありがとうございます。
試したのですが、今度は上のiframeには何も表示されなくなりました。 下のiframeにはbottom.aspxが表示されるのみです。 他に方法はありますでしょうか? |
|
投稿日時: 2003-06-10 13:59
ちょっと間違えました。
Tomscissorsさんのやり方の結果 post後、上下のiframeにtop.aspxが表示されている状態で 下のiframeにpost後のtop.aspxが表示されてしまいます。 よろしくお願いします。 |
|
投稿日時: 2003-06-10 15:38
すみません、そういえば上の処理はtop.aspxのformタグがrunat="server"だと実行できなかったと思います。
|
|
投稿日時: 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-10 20:42
GUNNMさん、ありがとうございます。
top.aspxのSub DataGrid1_SelectedIndexChangedに Server.Transfer("bottom.aspx")を記述してうまくいきました。 ありがとうございます。 ただ この場合、DataGridの選択時に仕込んであるscriptが実行されないんです。 (以前、GUNNMさんに教えてもらったDataGridの任意の場所をクリックして 選択状態にするコード) 値は取得できているので、見た目が選択状態になっていない(反転していない) だけだと思いますが・・・ |
|
投稿日時: 2003-06-10 23:22
話題がそれていきそうで怖いですねw
スクリプトが走らないのは、TOPとBottomどちらですか? 私の場合、ダブルクリックでPostBackさせていたので、シングルクリックで行に色がつくようにしていました。よって、色をつけていたのは、シングルクリック時に、JavaScript、PostBack時には、ServerSideです。。。 |