- PR -

条件によって「戻る」ボタンの遷移先を変える方法

1
投稿者投稿内容
んちょ。
常連さん
会議室デビュー日: 2006/02/22
投稿数: 28
投稿日時: 2006-04-13 00:42
ちょっとわかりにくいんですけど、件名の通りです。

@画面A⇒画面B⇒画面C
と遷移する場合と
A画面A⇒画面C
と遷移する場合があって、
「戻る」(btnReturn)を押すと
どちらも画面Aに遷移させたいと思っています。
しかし、クエリ文字列を使用しているため、URLの指定ができません。
どのようにしたら、可能になりますか?
ご教授いただけるとありがたいです。

自分的には
@の場合には 二つ前の画面へJavaScript:history.go(-2)をつかって、
Aの場合には 一つ前の画面へJavaScript:history.go(-1)をつかって遷移
と考えたのですが・・・・コードがわかりませんorz

btnReturnのクリックイベントで
@の場合 response.redirect("JavaScript:history.go(-2)")
Aの場合 response.redirect("JavaScript:history.go(-1)")
とかけたらいいのになぁ。。。(言いたいことをわかってほしいです(笑)

環境はASP.NET(VB) WindowsXP pro + SQLServer2003です。
ヨロシクお願いします。
買太郎
会議室デビュー日: 2006/03/27
投稿数: 10
お住まい・勤務地: 大阪府
投稿日時: 2006-04-13 00:49
「戻る」(btnReturn)押下時にポストバックして、btnReturn_Clickイベントで画面Aに遷移する処理を書いたらどうでしょうか?

どうしても、javascriptでもどらないといけない理由でもあるのでしょうか?
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-04-13 00:57
引用:

しかし、クエリ文字列を使用しているため、URLの指定ができません。


の意味が分からないので何ともいえないですが、画面C のページロード時にそういう javascript を書けばいいのではないでしょうか。

_________________
囚人のジレンマな日々
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-04-13 09:43
引用:

「戻る」(btnReturn)を押すと


btnReturn は System.Web.UI.WebControls.Button ですか?

引用:

しかし、クエリ文字列を使用しているため、URLの指定ができません。


画面Aを表示したときのパラメータが失われているので
クエリを再現できないのかな?

引用:

@の場合 response.redirect("JavaScript:history.go(-2)")
Aの場合 response.redirect("JavaScript:history.go(-1)")
とかけたらいいのになぁ。。。(言いたいことをわかってほしいです(笑)



RegisterStartupScript で書き出せば出来ないことは無いけれど
やらないほうが良いでしょうね・・・
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-04-13 10:11
状況をよく把握してなく、とんでもない勘違いしているかもしれませんが

1.画面Cに遷移する前に各画面で戻り先とその画面(画面Aや画面B)で取得した
 クエリ文字列をセッションに入れる。
2.画面Cの btnReturn_Clickイベントで、そのセッションの内容をみて
 Response.Redirect('セッションから取得した戻り先?セッションから取得したクエリ文字列')

っていうのはどうでしょうか?

# 「クエリ文字列を使用しているため」というのが かるあさん が指摘されている
# ように 画面Aを表示したときのパラメータが失われているのでクエリを再現できない
# からと解釈してみました。
# 的外れでしたらスルーしてください m(_ _)m
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-04-13 12:06
画面遷移を全てJavaScriptで記述して良いなら、

画面A location.href="XXX"; を使用
画面B location.replace("XXX");を使用
画面C history.back();を使用
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-04-13 14:34
引用:

ぼのぼのさんの書き込み (2006-04-13 12:06) より:
画面遷移を全てJavaScriptで記述して良いなら、

画面A location.href="XXX"; を使用
画面B location.replace("XXX");を使用
画面C history.back();を使用



これなら実現できそうですけど、画面Cでポストバックが動作した場合、
history.back();で前画面(画面A,画面B)に戻れましたっけ?
ポストバック前の画面Cに戻ったりしたような・・・


[ メッセージ編集済み 編集者: Katze 編集日時 2006-04-13 14:35 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-04-13 21:51
セッション変数に ReturningPoint を用意する。
画面Aが、GET メソッドで呼ばれたときに、ReturningPoint にリクエストをセットする。
# 画面Bには戻らないんでしょ?だったら、ここではセットする必要ないよね。
任意画面の「戻る」ボタン(ブラウザのそれかと思ったよ)で、ReturningPoint にリダイレクトさせる。

〆 written by Jitta@わんくま同盟 on 2006/04/13
□ Microsoft MVP for Visual Developer ASP/ASP.NET October, 2005 - September, 2006
1

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