5

ねえ、...非常に簡単な質問

私は通常phpを作成しますが、たまたまASP.NET 3.0フレームワークを使用してプログラミングしているため、これを修正する方法がわかりません。

私はドロップダウンリストを持っています、そして私がいくつかの値を選択した場合、...私の背後にあるコードはたくさんのことをしてデータを出力します......

さて、...ページをリロードすると(つまり、F5キーを押すか、ブラウザで少しリロードする)...すべてのデータはselectedIndexが0であるかのようにリセットされますが、実際に表示される値は前のものです。選択したもの!...「ifispostback = false」ステートメントで、コードビハインドのインデックスをリセットしようとしました...しかし、何も機能しません......値がキャッシュされ、変更できることは何もありません。それ...

...助けていただければ幸いです:)

(詳細な説明:....私のページロードサブからmydropdownlist.selectedIndexを画面に出力する場合...それは0を返します....ただし、画面上で選択されたインデックスは明らかに0ではありません...。なぜこれが起こっているのか理解しています...私はそれを止める必要があります....または少なくともビューステートのインデックスを決定する方法があります...)

アンドリュー

4

6 に答える 6

4

これは、フォーム フィールドの通常の動作です。通常、ブラウザは、テキスト フィールドの内容、チェックボックスの状態、およびページのリロードや戻る/進むなどのイベントでドロップダウンで選択された項目を記憶しようとします。

このため、スクリプトの初期化中に、フォーム フィールドの値が HTML で提供したコンテンツと一致すると想定しないでください。スクリプトに現在の値をスニッフィングさせ、ページがロードされたときにそれに応じて変数と DOM の状態を設定します。

リロード/ナビゲーション時にすべてのユーザー フォーム フィールドの変更を本当に破棄したい場合は、スクリプトの初期化でform.reset()を呼び出して HTML 状態に戻します。しかし、これは通常の状況では非常にユーザーフレンドリーではない可能性があります。

于 2009-03-22T02:53:08.627 に答える
3

f5 キーを押したときに、新しいページのリロードを行っていないように聞こえます。ドロップダウンリストから何かを選択すると、たくさんの背後にあるコードを実行するとおっしゃっています。そのアクションはポストバックです。したがって、そのアクションの後に f5 を押すと、ページへの新しい呼び出しとは見なされないため、if (IsPostBack == false) はポストバックであるため失敗します。

最初のアクションでポストバックが発生したため、その後 f5 を押すとポストバックになります。

他のコントロールがリセットされているため、ビューステートの問題も発生しているようです。ただし、クライアント側のスクリプトを使用して非表示/表示を行っている場合でも、viewstate を通じて永続化されることはありません。

于 2009-03-22T05:18:34.487 に答える
1

不要な場合は、チェックボックスでveiwstate を無効にしてみてください。

于 2009-03-22T02:55:00.947 に答える
0

Did you try clearing the cache in your browser? Most browsers support Control+F5 as a hard-refresh that will clear the cache for the current page and reload the entire page from the server.

于 2009-03-22T02:49:34.313 に答える
0

これは実際には、別の stackoverflow の質問に関する parrkid からのものですが、これをページの最後に追加します。

<script language="javascript">
  var B01 = document.getElementById('<%=YourDropDownList.ClientID%>');
  B01.selectedIndex = 0;
</script>

うん...おそらくasp.netの完全なハックですが、IMHO :-P

于 2011-11-03T15:48:57.027 に答える