- PR -

複数フレームを同時に書き換え

1
投稿者投稿内容
elmo
常連さん
会議室デビュー日: 2002/08/09
投稿数: 47
投稿日時: 2002-08-22 14:08
お疲れさまです。elmoです。

フレームを
上:検索画面 中:検索結果A画面 下:検索結果B画面
と三つにきり、上の検索画面から中と下を両方とも書き換えたいと思っています。

response.redirectではターゲットを<form>でしか設定できないようで、
複数ターゲットを指定することができませんでした。(できるのかな〜?)
response.redirectの挙動というのはSubmitボタンが押された時と同じ動きだと思うのですが複数フレームを指定する方法はあるのでしょうか?

やはりむりむりJavaScriptを書いて、
parent.framename.locaion.href="aaa.aspx"
とすべきなんでしょうか?

でもこれをためしても、クライアント側にJavaScriptが書き出されなかったんで、
まだ調べないといけないです〜。
書き出す前にsubmitされてそうな動きしてます・・・普通のボタンなのに・・・。

なにかよい方法、よいお知恵がありましたら、ご教授のほどをよろしくお願いします。
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-08-22 18:28
フレーム屋(苦笑)うりゅうです。

>フレームを
>上:検索画面 中:検索結果A画面 下:検索結果B画面
>と三つにきり、上の検索画面から中と下を両方とも書き換えたいと思っています。

 それは・・・・・ふつうのASPや、HTMLでも出来ないのでは・・・・

>やはりむりむりJavaScriptを書いて、
>parent.framename.locaion.href="aaa.aspx"
>書き出す前にsubmitされてそうな動きしてます・・・普通のボタンなのに・・・。

 方法論としてはそうだと思いますが、実はASPXのボタンのクリックイベントは恐ろしいことにSUBMITが行われて、PAGE_LOADイベントが終わった後(!)に起きていますので、その段階で処理行っていたのでは間に合いません。

 ですので、上記のスクリプトをFunctionかなにかにして、ASPXのなかに直接埋め込んで、ボタンのonClickプロパティのそのファンクションを呼び出すようにすればいいと思います。もちろん、ファンクションの最後に「submit()」を入れるのを忘れないようにしてください。

合ってるかな?(笑)
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
elmo
常連さん
会議室デビュー日: 2002/08/09
投稿数: 47
投稿日時: 2002-08-22 19:31
elmoです。

うりゅうさん、回答ありがとうございます。
やっぱりsubmitしてたんですね。
普通のWebコントロールのボタンを貼り付けたのに、ブラウザで表示されたページのソースをみたらしっかりsubmitボタンになっていました。
ページ遷移する前にさきにsubmitされてしまってたんですね。
回避方法やってみます。

あと今回のシステムはたくさんフレームをきりそうなんですが
aspxでフレームを扱うのはかなり面倒みたいですね・・・。
前途多難です。

また問題にぶつかったしまったんですが、
サーバー側の処理中に、ダイアログボックスを表示し、OKかNGを選んでもらって処理の分岐をするというのはできるんでしょうか?

やりたいことは:
サーバーコントロールのボタン「更新ボタン」をクリックするとDBへの更新がはじまるという処理を書いているんですが、この「更新ボタン」を押した時、本当に更新していいのかという確認のためのダイアログボックスを表示したいのです。
そしてyesを押された時は更新、noを押された時はキャンセルというふうにしたいのですが、
JavaScriptでだしたダイアログボックスのOKかNGか押されたというイベントをはたしてサーバー側でとれるのかなと疑問です。

クライアントの処理をかくタイミングがいまいちつかめませんし、サーバー側でむりむりJAVASCRIPTの文を書き出すとそれがソースのどこに書き出されるか予期できませんよね。
もうそれかサーバーコントロールを使わずに、普通にhtmlコントロールで処理すればいいんでしょうか。そしてサーバーに送るとか・・・。

ああ、混乱してきました。
みなさんクライアント側の処理ってどうしてますか?
教えてください〜!

Fossil
会議室デビュー日: 2002/08/02
投稿数: 2
投稿日時: 2002-08-22 23:54
Fossilです。

>また問題にぶつかったしまったんですが、
>サーバー側の処理中に、ダイアログボックスを表示し、OKかNGを選んでもらって処理の分岐を>するというのはできるんでしょうか?

自分も同じ事をするために、ボタンコントロールを作る方法をとりました。
1.Webフォーム上に配置された時は、Htmlのボタンコントロールになりすます。
2.実行するJavaScriptをプロパティで受ける。

あとは、JavaScriptだけで処理しても良いし、.Net側へ制御を移して
コントロールのクリックイベントに処理を書いても都合の良いように出来ます。

検討ちがいのことでしたらすみません。
elmo
常連さん
会議室デビュー日: 2002/08/09
投稿数: 47
投稿日時: 2002-08-26 10:35
ごめんなさい。
「Htmlのボタンコントロールになりすます」
というのは具体的にいうとどういうことなんでしょう?

htmlコントロールを使ってクライアント側で処理をし、サーバー側に送るという意味でしょうか?
教えてください!!
Fossil
会議室デビュー日: 2002/08/02
投稿数: 2
投稿日時: 2002-08-27 23:35
elmoさん。

言葉が足らなくてすみません。

「Htmlのボタンコントロールになりすます」 というのは、独自で作成した
ボタンコントロールのRender(コントロール描画)時に、本来ならば
WebContorlsのButtonコントロールが持っている処理が実行
される所を、Htmlコントロールのモノにすりかえるということです。

sub Render (output as HtmlWriter)

 ↓WebControlsのボタンを表示
mybase.Render(output)

 ↓HtmlControlsのボタンを表示
Dim HtmlButton as New HtmlControls.Button
HtmlButton.RenderControl(output)

end sub

あとは、RenderControlの前にHtmlControlsの
ボタンに対してOnClick時に実行するJavaScriptなんかを
指定してあげれば良いハズです。

*ロジックに誤りがあったらすみません。
 確かこんな感じというモノを書いてしまいました。
elmo
常連さん
会議室デビュー日: 2002/08/09
投稿数: 47
投稿日時: 2002-08-28 11:39
Fossilさん、回答ありがとうございます。
ということはaspxで用意されたボタンコントロールを使わずに、
自分で(ボタン)コントロールをつくりそれを書き出すときに、
処理するという感じなんでしょうか?

わ〜難しそう(涙)。
そこまでしないとできないということなんですね(涙)。
しかもそれを更新処理の途中でいれるとなると・・・。
まだ自分でコントロールを作ったことがないので、
コントロールの作り方から調べないといけないですね・・・。

がんばります。
わからないことがあったらまたこのスレッドに書き込みますので、
よろしくお願いします〜。
ぷりっつ
会議室デビュー日: 2002/01/18
投稿数: 5
投稿日時: 2002-08-28 15:06
Javascriptで(クライアント側)での制御をしたくないというなら、ちょっと求めている方法ではないかもしれませんが、こんな方法もあります。

[フレームの一つ].aspx にかかれている <form>タグの[runat="server"]を削除し、
target=_parent Action="[ぺーじ2].aspx"

としてやると、ボタンのSubmitの送信先がフレームの親になり(_topでもいいと思います)
ページ2に制御が移ります。
この時点だと ブラウザはフレーム構成ではなく[ページ2.aspx]単体を表示しようとしますので、
自分でframeset のページを書き出すか、redirectあたりでフレームページを
呼び出すという方法も使えます。

Session変数などもちゃんと維持しますので、結構オススメです。

[ メッセージ編集済み 編集者: ぷりっつ 編集日時 2002-08-28 15:07 ]
1

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