こんにちは私はボタンクリックイベントに動的コントロールを追加しています、私はドロップダウンコントロールを持っているので、選択したインデックス変更のためにドロップダウンするイベントを発生させています、私は自動投稿をtrueにしました、ドロップダウンから新しいアイテムを選択しているとき私はすべての動的コントロールを失っています
2 に答える
IPostBackDataHandlerインターフェイスを継承するすべてのサーバーコントロールには、ポストバックデータを処理するLoadPostDataメソッドがあります。コントロールがクラス(ページ、フォーム、プレースホルダー、コントロールなど)によって実装される場合、そのクラスはLoadPostDataメソッドを呼び出し、投稿されたデータとキーを渡してコントロールの状態を維持します。
必要なのは、ポストバック中に毎回ページ読み込みイベントの前またはページ内で動的コントロールを再インスタンス化/再初期化し、このコントロールをページ/フォーム/プレースホルダーに追加することです。次に、親コントロールによってLoadPostDataメソッドを呼び出すことにより、投稿されたデータがコントロールに自動的に割り当てられ、コントロールイベントが発生します。
記事と動的制御のコードの記述方法を確認してください- 動的制御イベント、asp.netでのポストバック中のデータを維持する方法
すべてのポストバックで動的に作成されたすべてのコントロールを再作成する必要があります(遅くともロードイベントで)。また、イベントをトリガーしてViewStateを維持するには、以前と同じIDを取得する必要があります。
作成するコントロールの数(に格納できる)がわかっている場合は、コントロールViewState
IDに追加することでカウンター変数からIDを取得できます。次に、ページのinit
イベントで正しいIDを使用してそれらを再作成できます。
推奨される測定値:
または、これを自動的に行うRepeaterのような組み込みのデータバインドコントロールの1つを使用します。それらを設定して()を呼び出すだけです。DataSource
DataBind
実装に関する同様の質問に対する私の回答は次のとおりです。