2

SelectedIndexChangedのときに機能しないという問題を回避しようとする多くの投稿を見つけましたEnableViewState='false'

なぜ制御状態が機能しないのか少し混乱していますが、誰かがそれを説明できればそれはボーナスポイントです.

「ハック」のいくつかはかなり「ハッキー」です。ドロップダウン値に対応するページ自体のビューステートに値を設定し、その値をポストバック中に受け取った値と比較するようなものです。

私は最高の最もエレガントなソリューションを探しています(良いものがあれば)。

これが巧妙な派生コントロールなのか、それとももっと巧妙なものなのかはわかりませんが、解決策が「信頼できる」ほど一般的であり、問​​題の特定のページでのみ機能するハックだけではないことを確認したいと思います(これは一般的なものです)そのようなハック!)。

4

3 に答える 3

5

なぜ、どのように機能するのかを本当に知りたい場合は、次の記事をお勧めします。

本当にViewStateを理解する

簡単に読めるものではありませんが、viewstate で一般的に遭遇するすべての問題をカバーしています。また、Page_Load ではなく Page_Init に入力するとすべてが機能する理由についても説明します。

于 2009-01-17T19:31:13.910 に答える
0

リストをコントロール コレクションに追加する前にバインドします (上記のコメンターが言うように後ではありません)。

-上記の記事の著者:)

于 2009-07-08T05:53:04.807 に答える
-1

以前の時点でデータを DropDownList にロードしてみてください。すなわち。InitComplete で。私はそれをテストしていませんが、それでうまくいくはずです。

編集:

それはうまくいきませんでした。私はそれをテストしましたが、満足のいくものではありません。Ken Browning がこの質問に関する別の回答で指摘したように、SelectedIndex が初期値以外の場合、SelectedIndexChanged イベントは常に発生します。

SelectedIndex が ViewState ではなく ControlState に格納されないのはなぜですか。ViewState をだまして、Items コレクションを保存せずに、SelectedIndex のみを追跡することはできますか?

于 2009-01-17T12:57:22.723 に答える