1

シナリオ:2つのドロップダウンリストを持つユーザーコントロールがあります。2番目のドロップダウンの値は、最初のドロップダウンで行われた選択に応じてフェッチされ、入力されます。したがって、最初のドロップダウンはポストバックを作成し、2番目のデータをプルします。したがって、2番目のドロップダウンでは、選択の変更に対するポストバックは必要ありません。

このユーザーコントロールはグリッドビューのページで使用されているため、グリッド内のレコード数に応じて数回繰り返されます。

問題:いずれかのドロップダウンで選択を行うと、すべてのユーザーコントロールドロップダウンでの以前の選択が失われ、ドロップダウンリストの最初の項目にリセットされます。

私にとって有効な解決策:それぞれのDropDownListのSelectedIndexChangedイベントでビューステートで行われた選択を設定することで、この動作を修正できます。ただし、UI(画面上で更新するために追加のデータを変更またはプルする)に関連することは何も行わず、ユーザーの観点からは時間の無駄であり、イライラするため、2番目のドロップダウンによってポストバックが行われることは避けたいと思います。

また、JavaScriptを使用して、非表示フィールドに永続化したい値を書き込んでみましたが、ページが更新されると非表示フィールドの値は空になります。

では、ポストバックしたりサーバー側のコードを記述したりせずにドロップダウン値を保持するための最良の方法は何ですか?

前もって感謝します。

4

1 に答える 1

1

@Aniruddha 、 UserControl のページ読み込みで最初のドロップダウンを埋めていると思うので、そのコードを !IsPostBack 制約に記述します。

protected void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack){
      // Write your existing drop down bind or other code here.
   }
}

Aniruddha おそらく Page_Load でグリッドをバインドしているため、この場合は!IsPostBack上記の制約の下でグリッドをバインドします

これがあなたを助けることを願っています!!

于 2012-08-26T11:27:15.947 に答える