- PR -

フレーム間のターゲット変更について

投稿者投稿内容
みく
会議室デビュー日: 2003/06/12
投稿数: 8
投稿日時: 2003-06-24 16:05
asp.netを使ってシステム開発をしているみくと申します。コードはVB使用です。

こちらのInsider.NET @IT会議室 の過去ログなどを見させてもらいましたが、
どうしてもうまくいかないので質問させていただきます。

画面が3つに分かれています。
上:検索画面です。
  ボタンが二つ、表示と新規です。
  テキストボックスに入力して表示を押すと、DBから情報を検索します。
中:一覧表示のDataGridをDBから表示します。
  HyperLinkが貼ってあり押すと、その情報がしたフレームに出て更新できます。
下:入力画面です。
  ボタンが二つ、削除と登録です。

ボタンはServer.Transferで、HyperLinkはhl.NavigateUrlでそれぞれのフレームを
更新していきます。HyperLinkはtargetを変えることができるのですが、
Server.Transferでは、どうしてもうまくいきません。
ボタンによって、動的にtargetを変えることはできないのでしょうか?
場合によってはボタンをクリックして、二つのフレームを更新したいのですが、
それもわかりません。

3つのフレームを毎回更新する方法も考えたのですが、フレーム毎に、
情報を更新したくない場合もありますので、できればtargetを変更したいと思っています。
ほとほと困っておりますので、ご指導いただけると嬉しいのですが・・・
よろしくお願いします。

================================================================================

このスレッドに対する反応がなく、途方にくれています。
これはこの質問に対する解決策がないということでしょうか?
そうでしたら、それだけでも教えてもらえるとありがたいです。

皆さんどうぞよろしくお願いします。

[ メッセージ編集済み 編集者: みく 編集日時 2003-06-26 10:43 ]
yoko
常連さん
会議室デビュー日: 2003/05/09
投稿数: 20
投稿日時: 2003-06-26 18:41
あたしも同じ内容で悩んでいます。

ボタン押下時にクライアントスクリプトで、
formのtargetを変更すれば、変わると思ったんですが
変わらないようです。

どうすれば変わるんでしょうねぇ?
どなたか教えてください。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-06-27 11:26

・クライアントでtargetを変更する。(やり方は不明)
・フレームを使わない。
・ボタンをフレーム内に移す。
・runatをつけないで、formを別にする。

(このぐらいしか思い浮かばない)
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2003-06-27 11:56
今日は

答えになって無いかも知れませんが、私の場合は他のフレームへ影響させる時は target="_top"を
付けて、フレーム設定の親へ戻しています、この時必要な情報はSessionに保存しておきます。
これにより,フレーム全体を更新します。
この時、Session情報を参照して各フレムー内で必要な画面構成にしています。
結果として、必要なフレームのみデータや画面が変わり目的を達成しています。
みく
会議室デビュー日: 2003/06/12
投稿数: 8
投稿日時: 2003-06-27 12:09
catsさん、rvmxさんありがとうございます。


catsさんからいただいた案の

>・クライアントでtargetを変更する。(やり方は不明)

についてですが、私もnishiさんと同じように

>ボタン押下時にクライアントスクリプトで、
>formのtargetを変更すれば、変わると思ったんですが
>変わらないようです。

Button1.Attributes.Addなどを使ってクライアントでtargetを
変更しようとしたのですが、Server.Transferを使うと、
遷移元の情報(この場合はtarget)を変更することができないようでした。


現在進めているプロジェクトの仕様が、部分的にスクロールを出さなければ
いけないもので、その辺りをクリアーする方法がなければ

>・フレームを使わない。

という案は難しいと思います。


>・ボタンをフレーム内に移す。

というのはどういうことでしょう。
ボタンクリックイベントを取得するフレームと、それによって内容が変わるフレームが
同じということでしょうか?


>・runatをつけないで、formを別にする。

私のやり方が悪いのかもしれませんが、formを2つ以上書くとエラーになってしまいます。
何か方法があるのでしょうか?
教えていただけるとありがたいです。


rvmxさんの

>答えになって無いかも知れませんが、私の場合は他のフレームへ影響させる時は >target="_top"を
>付けて、フレーム設定の親へ戻しています、この時必要な情報はSessionに保存しておきます。
>これにより,フレーム全体を更新します。
>この時、Session情報を参照して各フレムー内で必要な画面構成にしています。

という考え方もいいですね。
今までServer.Transferを使っていろいろ試してきましたが、
rvmxさんのやり方も結果として望む形が得られそうですね。


返信がなく困っていたので、ほっとしました。
catsさん、nishiさん、rvmxさん、返信ありがとうございました。
はぐれコ〜ギ〜
常連さん
会議室デビュー日: 2003/06/12
投稿数: 32
投稿日時: 2003-06-27 12:33
こんにちわ。

引用:
Button1.Attributes.Addなどを使ってクライアントでtargetを
変更しようとしたのですが、Server.Transferを使うと、
遷移元の情報(この場合はtarget)を変更することができないようでした。



今回の対象であるターゲット指定はどの時点で確定されるのでしょうか?
Page_Load時に確定されるのであれば、
Page_LoadにButton.Attributes.Add("onclick","XXXX(クライアントの関数)")と追加してやれば
それぞれのボタンでターゲットを変更できそうです。

# 的外れでしたらすいません。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-06-27 13:24
引用:

現在進めているプロジェクトの仕様が、部分的にスクロールを出さなければ
いけないもので、その辺りをクリアーする方法がなければ
>・フレームを使わない。
という案は難しいと思います。


smartnavigation=trueにするとか、iframeでは無理ですかね。


引用:

>・ボタンをフレーム内に移す。
というのはどういうことでしょう。
ボタンクリックイベントを取得するフレームと、それによって内容が変わるフレームが
同じということでしょうか?


そういうことです。


引用:

>・runatをつけないで、formを別にする。
私のやり方が悪いのかもしれませんが、formを2つ以上書くとエラーになってしまいます。
何か方法があるのでしょうか?
教えていただけるとありがたいです。


runat=serverが書いてなければいくつでもformを作れます。
そのかわりサーバコントロールは使えません。
みく
会議室デビュー日: 2003/06/12
投稿数: 8
投稿日時: 2003-06-27 13:53
はぐれコ〜ギ〜さん、catsさん、返信ありがとうございます。


>今回の対象であるターゲット指定はどの時点で確定されるのでしょうか?
>Page_Load時に確定されるのであれば、
>Page_LoadにButton.Attributes.Add("onclick","XXXX(クライアントの関数)")と追加してやれば
>それぞれのボタンでターゲットを変更できそうです。

そのようですね。Server.Transferを使わないで、Page.IsPostBack時の
Page_LoadイベントにButton.Attributes.Add("onclick","XXXX(クライアントの関数)")を
記入して試したところ、大丈夫そうでした。
ただ、Button.Attributes.Add("onclick","XXXX")というのは、一度のPage_Loadイベントに一度しかかけないのでしょうか?
デバックしてみると、二度目からは通っているのに、画面上は無視された形になって
しまいました。


>smartnavigation=trueにするとか、iframeでは無理ですかね。

すみません。
勉強不足で、smartnavigation、iframeの使用法がよくわかっていませんでした。
もう少し調べてから検討させていただきたいと思います。


>runat=serverが書いてなければいくつでもformを作れます。
>そのかわりサーバコントロールは使えません。

これは知りませんでした!VB側でコードをいじるために、最初の段階でrunat=serverを
記入していましたので、てっきり.NETではformはひとつなんだと思っていました。
勉強になりました!

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