とを使用したASP.NETDropDownList
がAutoPostBack=true
ありEnableViewState=false
ます。ページに何もしないボタンがあります。ddlで選択を変更すると、期待どおりにポストバックされます。ボタンをクリックすると、ページが投稿され、ddlがSelectedIndexChanged
起動します。なぜ解雇されるのですか?
4 に答える
Microsoft からのフィードバック:- http://connect.microsoft.com/VisualStudio/feedback/details/103844/dropdownlist-always-fire-selectedindexchanged-event-when-viewstate-is-disabled-and-the-selected-item-is -ユーザーによる変更なし
「フィードバックをお寄せいただきありがとうございます。ページまたは DropDownList コントロールで ViewState が無効になっている場合、選択したインデックスを保存できないため、各ポストバックは選択したインデックスが変更されたように見えます。選択したインデックスを自分で保存し、それと比較することができます。選択が実際に変更されたかどうかを確認するか、DropDownList で ViewState を有効にすることができます。」
あなたの場合、ドロップダウンリストのビューステートは false です。同じことを有効にするか、上記のように選択したアイテムのインデックスを比較できます。
ビューステートを有効にしてみてください。これは一般的な問題です。
編集
ビューステートを有効にしたくない場合は、この人がViewStateなしで0番目のインデックスにDropDownList OnSelectedIndexChangeを行ったように、ドロップリストの値を自分で追跡する必要があります。
ddl を page_load にロードすると、ボタンをクリックすると、再び page_load になり、選択したインデックスを変更する ddl アイテムが再度ロードされます。しかし、私はあなたのコードを知らないので、これは仮定です。
同じ問題がありました。私の問題は、 Render function を呼び出したことにあることがわかりましたPage_Load
。
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender
Page_Load
ページがデフォルトのロード関数としてロードされ、prerender を実行したときに再度ロードされたという事実を完全に見逃していました。次のように変更したところ、関数は一度だけ呼び出されるようになりました。
Sub Renderer(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender