- PR -

戻るボタン押下時のDropDownList表示について

1
投稿者投稿内容
がんこチーム
会議室デビュー日: 2004/09/08
投稿数: 15
投稿日時: 2004-12-08 19:44
お世話になります。

C#でWebアプリケーションの開発をしております。
以前のスレッドにもよく似た話題があったのですが(参照元記事)、どうにも解決方法が見つからず、困っております。

DropDownListを2個配置します。
ddA(AutoPostBack=True) ddB(AutoPostBack=false)
この二つは連動しており、ddAの値に合った内容をddBに表示します。
例)
ddAの内容:"野球選手"、"相撲取り"
ddBの内容:
ddAの値が"野球選手"の場合は"イチロー"
ddAの値が"相撲取り"の場合は"朝青龍"

ここまでの動作は問題無く出来ています。

何度か選択を行い、ブラウザの戻るボタンを押すと、
ddA:"野球選手"、ddB:"朝青龍" (HTMLソースではイチローがselectedになっている)
ddA:"相撲取り"、ddB:"イチロー" (HTMLソースでは朝青龍がselectedになっている)
となってしまいます。

特に珍しいパターンではないと思うのですが、皆さんはどのように解決しているのでしょうか。
或いは、何か良い回避策があればご教授願いたいと思います。
よろしくお願い致します。
とっちん
会議室デビュー日: 2004/11/22
投稿数: 18
投稿日時: 2004-12-08 20:00
こんにちは。

<asp:DropDownList id="dda" OnSelectedIndexChanged="dda_Changed"
AutoPostBack="true" runat="server" />
として、イベント内で処理したりしています。
がんこチーム
会議室デビュー日: 2004/09/08
投稿数: 15
投稿日時: 2004-12-08 20:35
とっちんさん

すみません。
これだけではブラウザで戻るボタンが押された時、サーバ側では何もできないような気がするのですが・・・
具体的にどのように"処理"されているのでしょうか?
よろしければお教え下さい。
とっちん
会議室デビュー日: 2004/11/22
投稿数: 18
投稿日時: 2004-12-09 09:43
こんにちは。

DropDownListのAutoPostBack後にブラウザの「戻る」ボタンを押下したら、DropDownListの中身がPostBack前の状態になりますか?
前のページに遷移するだけのように思いますが...

プログラム上でブラウザの「戻る」ボタンの制御を考えるより、「戻る」ボタンを押下されても問題ないような方向で考えては?
がんこチーム
会議室デビュー日: 2004/09/08
投稿数: 15
投稿日時: 2004-12-09 10:31
ご返答ありがとうございます。

参照元記事にあるようにドロップダウンリストのSelectedIndexChangedイベントに
Label1.Text=DropDownList1.SelectedItem.Value;
と書くだけでも現象は確認できます。

> プログラム上でブラウザの「戻る」ボタンの制御を考えるより、
> 「戻る」ボタンを押下されても問題ないような方向で

私もまさにその通りだと思います。
実際に同じ画面に「登録ボタン」などがあったとしても、HTMLのソースは正常なのでデータ的な不整合は起こらないと考えられます。

しかし、今回の場合は二つのドロップダウンリストが連動している為、ユーザから見ると明らかにおかしな「見た目」になります。
(先の例だと相撲取りのイチローが存在しているように見える)

「戻る」ボタンを押されても問題無いようにするアイデアが何か無いでしょぅか・・・
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-09 11:37
力技になるけど、JavaScriptでcookieにいちいち覚えておくってのだめかなぁ。
試す時間が無い、ごめん。

_________________
たつごろー
codeseek
こみゅぷらす
とっちん
会議室デビュー日: 2004/11/22
投稿数: 18
投稿日時: 2004-12-09 14:03
こんにちは。

SmartNavigation="true"にしてもダメでしょうか?
がんこチーム
会議室デビュー日: 2004/09/08
投稿数: 15
投稿日時: 2004-12-09 16:35
さて、色々と試してみたのですが、結局「JavaScriptで選択し直す」という形を選択しました。
正直、とても納得できる形ではありませんが、仕方がないですね...

とっちんさん、たつごろーさん、お知恵を出して頂き、ありがとうございました。

<script language = "JavaScript">
<!--
function winopen() {
 for(i=0; i<document.Form1.DropDownList1.options.length; i++){
  if(document.Form1.DropDownList1.options[i].defaultSelected == true){
   document.Form1.DropDownList1.options[i].selected = true;
  }
 }
};

window.onload = winopen;
-->
</script>
1

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