- PR -

DropDownListの値 と 「戻る」ボタン

1
投稿者投稿内容
hide.skh
会議室デビュー日: 2003/03/01
投稿数: 6
お住まい・勤務地: 埼玉
投稿日時: 2003-03-20 14:08
前回はありがとうございました。
また行き詰まってしまいました・・・。
(なにぶん1人で開発しているもので申し訳ありません)
さて、本題です。

WebフォームコントロールのDropDownListに、
 1:あいうえお ←Selected
 2:かきくけこ
 3:さしすせそ
という値を設定し、AutoPostBackを有効(True)にします。

この画面を実行し、
DropDownListから「2:かきくけこ」を選択します。
(当然、この時点でPostBackが発生しています)

次に、ブラウザ(IE6SP1)の「戻る」ボタンを押下します。

すると、
DropDownListの「2:かきくけこ」は、
「1:あいうえお」に戻ってくれません。

これは仕様なのでしょうか??


ちなみに、
このDropDownListのSelectedIndexChangedイベントで処理した内容(表示)は
「戻る」ボタン押下によって元に戻ってくれます。

開発環境は VS.NET + C#です。
良いアドバイスを宜しくお願い致します。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-03-20 14:51
例えば、ページにDropDownListとLabelを貼り付け、そのDropDownListのポストバックイベントでLabelのTextをDropDownListで選択された値に書き換える(下ソース参照)ようにし、
コード:
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
	Label1.Text=DropDownList1.SelectedItem.Value;
}


何回かポストバックさせた後に「戻る」を押していくと、Labelの値とDropDownListの値が1回ずつずれているのが分かります。

勝手な想像ですが、これは多分タイミング的に
画面表示->DropDownList変更->戻ったときのために状態保存->ポストバック
としているためだと思います。
掲示板に書き込みをする場合でも、「書き込み」ボタンを押して、確認画面で間違いに気が付いて戻ったときにテキストボックスに書いたものがそのまま残っている場合がありますよね。

ページを表示した初期の状態ではなく、変更された後の状態を取っておいているのではないでしょうか。

レスポンスのヘッダ等で指定するのか、ブラウザの設定なのかはわかりませんが、変更後の状態を保存しないような方法があればそれで解決すると思います。

……多分。
hide.skh
会議室デビュー日: 2003/03/01
投稿数: 6
お住まい・勤務地: 埼玉
投稿日時: 2003-03-20 15:26
引用:

>何回かポストバックさせた後に「戻る」を押していくと、Labelの値とDropDownListの値が1回ずつずれているのが分かります。



↑まさにその通りなんです!

やはり仕様なのでしょうかね・・・。
引き続きアドバイスお待ちしております。

※「戻る」ボタンは使わないでねっと言っておけば、
 ある程度は運用カバーができますが、それでも押しちゃう人はいますので(涙)
 [現在イントラネット構築中]
1

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