ASP.NET VS2008 C#-ドロップダウンリスト-ポストバック
-
05-07-2019 - |
質問
autopostback = trueなしでドロップダウンリストを使用する方法。
サーバー上の値は、クライアント側から選択された値に従って変更されていません。既に述べたように、ドロップダウンごとに自動ポストバックがポストバックをトリガーすることは望ましくありません。
解決
ドロップダウンの値を失ったときはいつでも、値の変更を処理する前にドロップダウンをめちゃくちゃにして再入力したためです。私にとっては、Javascriptなどのアイテム属性を追加するなどの特別な操作を行う必要があるドロップダウンです。これは、ページのロードごとに追加する必要があるデータです(別名などのドロップダウンに保持されないデータ)各アイテムの名前と値)。これらの場合、ロード時にこの作業を行った後、ページのライフサイクルとDOHの後半で値を取得しようとします。
ページのライフサイクルは次のとおりです。
http://msdn.microsoft.com/en-us/library /ms178472.aspx
ドーナツへのドルそれが起こっていることです。値を取得するために使用しているポストバックイベントを処理する前に、おそらくアイテムをリロードするだけです。これを実行していて、このワークフローを回避できない場合は、ドロップダウンに値を設定するロジックの最初に選択したインデックスを保存し、完了したらドロップダウンの選択したインデックスにその値を設定します。
他のヒント
ビューステートに保存されるので、最終的にポストバックするときに値が正しくなります。ポストバックなしで現在の値を取得したい場合は、javascriptがこれを行う方法になります。
最悪の場合、リクエストオブジェクトから値を取得できます:
string selectedID = Request[DropdownControl.UniqueID];
最初のページの読み込み中にのみ選択ボックスにオプションを入力し、ポストバック中には再度入力しないようにしてください
if (!this.Page.IsPostBack) {
//fill select box here
}