- PR -

2回目のPage_Loadが処理されない

1
投稿者投稿内容
きち
常連さん
会議室デビュー日: 2003/12/17
投稿数: 41
投稿日時: 2003-12-17 16:26
「フレーム」「Session」などを検索して「件名:Page_Load を通らない」などを
読んだのですが解決できなかったので質問させてください。

使用言語:ASP.NET(VB.NET)
OS:Windows2000
ブラウザ:IE5.5以上

〜動作〜
A.aspxにフレームにてB.aspxを表示しています。
B.aspxにはDataGridにてデータを一覧表示しています。
B.aspxの一覧から行を選択し、A.aspx画面のボタンを押下後に
B.aspx.vbにて選択行のデータを抽出してSessionに
登録した後javascriptにてC.aspxに遷移しています。
  Dim script As New System.Text.StringBuilder()
  script.Append("<script language=""JavaScript"">")
  script.Append("window.open('C.aspx', '_top');")
  script.Append("</script>")
  Page.RegisterStartupScript("authenticated", script.ToString)
C.aspxのPage_LoadにてSessionを取得しています。


C.aspxを最初に表示した時には問題ないのですが
C.aspxの戻るボタンによりA.aspxに戻ったあとに
またC.aspxに遷移するとPage_Loadが処理されません。

「件名:Page_Load を通らない」にて「ログアウト処理をおこなうことにより、
セッションを切ることが出来、Page_Loadをすっとばすことなくログイン認証が出来ました。」と
あるので、Sessionを切ることによって再度Page_Load処理が行われると思い、
C.aspxから戻る時にセッションの破棄「Session.Abandon()」を行ってみたのですが
やはり2回目の表示の時にPage_Loadが実行されません。やり方が違うのでしょうか?

AutoEventWireup属性はfalseにしてありますが、
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
とイベントハンドラの宣言部にHandlesキーワードを使用してます。
試しにAutoEventWireup属性をtrueにしましたが2回目のPage_Loadは動きませんでした。

2回目の表示の時にもPage_Loadイベントを実行させるにはどうしたら
よろしいのでしょうか?
ASP.NETに携わって2ヶ月目です。分からないことが多くて困っています。
どうかよろしくお願いします。
きち
常連さん
会議室デビュー日: 2003/12/17
投稿数: 41
投稿日時: 2003-12-25 16:39
自己レスです。

結局この件の解決方法は分かりませんでしたが、
お客様の仕様を多少変更して違う形で作成しました。

DataGrid画面にスクロールバーを付けたいがために
B.apsxに表示していました。
そのDataGridをA.aspxのパネルの上に置いて、
パネルをスクロール可能に設定することにより対処しました。

閲覧してくれた方々、ありがとうございました。
fizzy
会議室デビュー日: 2003/09/09
投稿数: 17
お住まい・勤務地: TOKYO
投稿日時: 2003-12-26 09:15
まだ見ていらっしゃるかわからないですが、とりあえず。
キャッシュがあるからじゃないかなと思うんですが、いかがでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-12-26 09:51
引用:
fizzyさんの書き込み (2003-12-26 09:15) より:
まだ見ていらっしゃるかわからないですが、とりあえず。
キャッシュがあるからじゃないかなと思うんですが、いかがでしょうか?

そのようですね。IEの場合、インターネット一時ファイルの設定を
「ページを表示するごとに確認する」にすれば毎回見に行くようになりますね。
fizzy
会議室デビュー日: 2003/09/09
投稿数: 17
お住まい・勤務地: TOKYO
投稿日時: 2003-12-26 13:13
引用:

べるさんの書き込み (2003-12-26 09:51) より:
そのようですね。IEの場合、インターネット一時ファイルの設定を
「ページを表示するごとに確認する」にすれば毎回見に行くようになりますね。



HTMLに

<%@ OutputCache Duration="1" VaryByParam="none" %>

と記述してみてください。
キャッシュを見なくなるはずです。
きち
常連さん
会議室デビュー日: 2003/12/17
投稿数: 41
投稿日時: 2003-12-26 18:16
fizzyさん、べるさん、ありがとうございます。

HTMLに
<%@ OutputCache Duration="1" VaryByParam="none" %>
を入れて試したところ、毎回Page_Loadが処理されるようになりました。

ただ、今回の作業ではパネルにDataGridを貼り付けて行うほうが
スムーズに出来るので、そちらの方法で行わせていただきました。

おかげさまで悩んでいたこともすっきりしたので良い年末をすごせそうです。
ASP.NETは色々なことが出来て楽しいですね。悩むことも多いですけど・・

大変ありがとうございました。それでは失礼します。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2003-12-26 19:18
引用:
<%@ OutputCache Duration="1" VaryByParam="none" %>

あ、これでキャッシングしなくなるのですね(見に行かないだけ?)
勉強になります。HTTPヘッダをいじってくれるのですね。

コード上では
Response.Cache.SetCacheability(HttpCacheability.NoCache);
で、同じことができるようですね。
1

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