- - PR -
[ASP.net] DropDownListとLinkButtonの配置画面へ戻る(history.Back)
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-14 18:50
1.WebForm1.aspx画面にDropDownListとLinkButtonを配置
2.WebForm2.aspx普通の画面 3.WebForm1.aspxのDropDownListのAutoPostBackにてWebForm2.aspxへResponse.Redirect 4.WebForm2.aspxにてBrowserの戻るボタン押下(history.Back) 5.WebForm1.aspxにてLinkButton押下 とすると「5.」の操作を行った場合、サーバサイドにて なぜか、DropDownList_SelectedIndexChangedイベント発生 その次に、LinkButton_Clickイベント発生 となってしまいます。 LinkButton_Clickイベントのみを期待していたのですが DropDownList_SelectedIndexChangedイベントまで発生してしまうのは、 なぜなんでしょう? エンドユーザへは「history.Backは動作保証外!」とは謳ってま すが、何をしでかすか解らないユーザが... このような2重にイベントが発生しない回避方法等あれば、ご教授願います。 [環境]Windos2000+ASP.NET+SQLServer2000+IE5.5 | ||||||||||||
|
投稿日時: 2004-07-14 19:39
えんぞ@見習さん、こんばんは。
戻るボタンを押して元の画面を表示すると、3番の操作で選択したアイテムがそのまま選択されていませんか? 本来は3番のポストバックで、DropDownList のどのアイテムが選択されているかが ViewState に保持されます。しかし、戻るボタンを使っているので ViewState には初期値しか保持されておらず、5番のポストバック時に ViewState の値と DropDownList の値とが異なっているために、SelectedIndexChanged イベントが発生してしまうのだと思います。 | ||||||||||||
|
投稿日時: 2004-07-14 23:12
きくちゃんさん、ご回答ありがとうございます。
仰る通り、history.back後のDropDownListは選択されたままの状態です。 ということは、__doPostBackにて theform.__EVENTTARGET.value = eventTarget; となってるにも係わらず・・・、やはりViewStateと比較してSelectedIndexChanged をRaiseしてるってことになるのですかね...(^^; 対処方法としては、history.backが発生した場合は 1.PostBackにて画面を再表示 2.JavaScriptでDropDownListのselect値を替える といったとこに、落ち着くのでしょうか...。 | ||||||||||||
|
投稿日時: 2004-07-15 09:44
えんぞ@見習さん、お早うございます。
MSDNライブラリの ListControl.SelectedIndexChanged イベントの説明によれば、
と、ありますから、発生するでしょうね。
「戻る」ボタンの扱いについては、過去にも色々と話題になっていますので、探してみて下さい。 | ||||||||||||
|
投稿日時: 2004-07-16 10:57
きくちゃんさん、度々有難う御座います。
IEでのキャッシュ無効化 で逃げの道に入ることにしました。(^^; (その他参考にした記事) 遅レスになってしまいましたが、有難う御座いました。 |
1