ブラウザ画面で、変更した値が元に戻る場合が時々あり、困っています。
お世話になります。
あるクライアントで、画面で値を変更して登録ボタン押します。
実行確認ダイアログでOKを入力します。
次に登録しましたの確認ダイアログ表示します。
この時、画面で変更した値が元の値に戻って表示されます。
この現象は、毎回発生する訳でなく時々発生します。
(現象が発生するクライアントは、何台もあります。OSのバージョンも違えば、
IEのバージョンも違います)
今は、原因がクライアントPC側か、プログラム側かも判りません?
プログラム側は、DB更新するSQL文を見る限り画面の値が元の値で更新しています。
SQL文の値は、データテーブルよりセットしています。
データテーブルの値は、ポストバックのタイミングで、画面よりセットしています。
この時のBeginEditとEndEditが悪いのか?
または、クライアント側のIEの設定に問題があるのか?
サーバはwin2003(SP2)+IIS6+oracle9i
クライアントはWinXp+IE8等、いろいろ
VS2005です。
以上、よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
う~ん、いまひとつよくわからないのですが、なかなか非情な実装ですねえ。
親画面から子画面(JavaScript別窓?)をQueryStringつきで開き、子画面Load時にパラメタ拾ってデータを読み画面表示する。
↓
子画面側のformから、親画面へのurlをアクションにしてsubmit
↓
親画面がLoadされたときに遷移先をRequestから取って、子画面経由であればそのRequest内容を拾ってフォームに反映
↓
親画面の登録ボタン押す
↓
登録確認ダイアログ表示
↓
登録完了ダイアログ表示
ということだとすると、親画面が子画面から呼び出されて再Loadされたときに、Request判定している時点でコケてますね。
Page_Load時点でのRequestオブジェクト内容をデバグしてみてください。
自分思うに、一番ありそうな話は、ページがキャッシュ状態で開かれてしまい、内容が書き換わらないことです(親画面は開きっぱなしのようなので)。
特に子画面から短時間で登録すると、ブラウザの「リロード」ボタンと同じことになります。
ちゃんとPege_Loadイベントも起きていないかもしれません。
もしそうなら、対策は、親画面中のページディレクティブやMETAタグに、キャッシュ忌避用のパラメタを打ちまくるか、いったん別画面を経由させて親画面をLoadさせることです。
回答ありがとうございます。
また、返信が遅くなり大変申し訳ありません。
こちらの質問内容や現象説明に間違いがありました。整理しておきます。
お客様環境で、ほとんどのPCで入力した内容が、時々元の値に戻る場合がある。
社内の環境では、1台のみ発生し頻度も10回に1回程度、他の4台のPCでは発生しない。
画面の構成は、フレームで上部がメニュー的な作りで、画面切り替えとDBへの更新ボタンあり。←前はこれを親画面と書きました。
下部が各画面です(6画面あり)。←前回は、これを子画面と書きました。すみません。
現象は、下部の各画面で入力した内容が上部のDB更新ボタンを押した時に、元の値戻ってしまう現象です。
後、最近分かった事として別サーバでは、再現しないと。
その為、今からサーバのIISの設定の違いや本当に同じプログラムが動いているか調べて行きたいと思います。
以上、ありがとうございました。
No.2
- 回答日時:
AjaxとかMVCとか、状況がよくわからないのですが、
値を変更して登録ボタン押す
↓
実行確認ダイアログ出す(onClientClickで出してます?)
↓
OKボタン押す
↓
サーバへフォーム送信される
↓
pageLoadイベント発生
↓
ボタン等のイベントハンドラ発生
↓
ブラウザがページを描画
↓
登録しました確認ダイアログ表示(JavaScript)
という通常のASP.NET Webフォームの流れなら、ポストバックでは、前画面のサーバコントロール値は、必ず再現されなければいけません。でなければMS倒産(笑
この際JavaScriptは関係ないと思われます。
それが不可能ということは、何か間違っています。
・サーバコントロールではない
・そのサーバコントロールのPostBackを明示的にfalseにしている
・サーバコントロールが動的に追加されたもの
また、値を取り出す場所を間違えている場合もあります。
ポストバックは<asp:button>とか<asp:linkbutton>で行っていると思いますので、正しくそのボタンイベントハンドラ内で値を取り出しているか確認してください。
ポストバック後であっても、initイベントやpreloadイベントでは、タイミングによって値がセットされません。
この回答への補足
返信ありがとうございます。
説明不足ですみません。
Ajaxは未使用、MVCは(良く判っていませんが、たぶん)未使用です。
後、よくプログラムを見ると、画面へ表示して入力するテキスト(子画面)とDB更新するボタン
(親画面)は別フォームでした。
親画面に子画面切り替えするリンクあります。
データセットは2つ、子画面は6画面です。
子画面のPage_Loadで、データセットより画面上の項目へデータ転送して表示しています。
親画面のPage_Loadで、Request.HttpMethodとRequest.UrlReferrer.ToString()を使って、
どの画面より、イベントが来たかで、移動元子画面の項目の値をデータセットへ転送しています。
障害発生するタイミングは、子画面で値変更し、親画面の登録ボタン押し、
登録確認ダイアログ表示(onClientClickではない)し、登録完了ダイアログ表示の際です。
発生する場合と発生しない場合があります。
本番環境で、ほぼ毎回(発生しない場合もあり)、私の居る環境(別会社)では、5台中1台のPCで
10回に1回ほど発生します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Windows 10 ノートPCの「アップデートナビ」画面について 1 2023/07/04 21:27
- Windows 10 Windows10 の設定?について (長文ですがよろしくお願いします)m(_ _)m 3 2022/05/14 12:22
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
location.hrefでページ切替時の...
-
C# ログイン画面からメイン画面...
-
CSV出力を画面から選択したデー...
-
要素が画面内に表示されている...
-
javaのstrutsを使った画面遷移...
-
MFCプログラミング
-
ASP.NET 画面遷移前の状態を保...
-
struts2Listのバインド方法がわ...
-
Java-jspの画面入力値保持について
-
非アクティブな画面を操作する...
-
VC++ デスクトップキャプチャ方法
-
ブラウザ画面で、変更した値が...
-
【C#】 FormClosingのイベント...
-
FormのsubmitでFormの内容がnull
-
C# Windowsフォーム全コントロ...
-
Strutsの情報保持の仕方について
-
window.open()使用サブウィンド...
-
登録後、呼び出し元ページに戻...
-
C言語で今まで表示していた画面...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
Java-jspの画面入力値保持について
-
Javaプログラミングの質問にな...
-
画面を隠す・消す方法を教えて...
-
遷移元を判定したい!
-
ASP.NET 画面遷移前の状態を保...
-
ServletからServletへの値渡し
-
C# ログイン画面からメイン画面...
-
javaのstrutsを使った画面遷移...
-
セッション切れでのリクエスト...
-
Javascriptのhistory.back()が...
-
ruby on railsでの画面間 パラ...
-
"+"文字が" (スペース)"に文字...
-
サブミット後、自動的に画面を...
-
非アクティブな画面を操作する...
-
FormのsubmitでFormの内容がnull
-
location.hrefでページ切替時の...
-
ブラウザアドレスバーからのURL...
-
画像の縦横比固定の計算方法。
おすすめ情報