4

テキストボックスのみを含むユーザーコントロールがあり、別のフォームでこのユーザーコントロールを動的に追加すると、ユーザーはユーザーコントロールを何度も追加できます。セッション変数を使用してユーザーコントロールを再作成します(このアプローチはクールに聞こえないかもしれません)。コントロールを再作成すると、明らかにテキストボックスの値が消えます。ポストバックでユーザーコントロールの状態を維持するための解決策はありますか?

4

4 に答える 4

7

正しいページライフサイクルイベント(PreInit)中に動的コントロールをコントロールに追加すると、インターフェイスを介して状態が維持されIPostBackDataHandlerます。

PreInit-動的コントロールを作成または再作成します。

于 2013-01-08T14:23:17.463 に答える
4

私は過去に同じ問題を抱えていました。

私が行ったのは、動的に追加されたコントロールにIDを与え、ポストバックでもそのIDを保持するようにしました(私の場合、セッション内のすべての情報を保持し、コントロールを再作成しました)。

ポストバックされたコントロールのIDが以前と同じになると、Microsoftは魔法をかけ、コントロールにポストバック前の値を再入力しました。

于 2013-01-08T14:53:19.753 に答える
0

オブジェクトキャッシュを使用します。ユーザーコントロールをキャッシュに追加し、必要なときに取得します。

これがどのように機能するかの良い例をASP.net-チュートリアルキャッシュとオブジェクトキャッシュで見ることができます。

私も今asp.netを学んでいて、それは非常に良い説明であることがわかりました。Microsoftライブラリも使用しました

于 2013-01-08T13:35:18.887 に答える
0

IPostBackDataHandlerインターフェイスを継承するすべてのサーバーコントロールには、ポストバックデータを処理するLoadPostDataメソッドがあります。コントロールがクラス(ページ、フォーム、プレースホルダー、コントロールなど)によって実装される場合、そのクラスはLoadPostDataメソッドを呼び出し、投稿されたデータとキーを渡してコントロールの状態を維持します

必要なのは、ポストバック中に毎回ページ読み込みイベントの前またはページ内で動的コントロールを再インスタンス化/再初期化し、このコントロールをページ/フォーム/プレースホルダーに追加することです。次に、親コントロールがLoadPostDataメソッドを呼び出すことにより、投稿されたデータがコントロールに自動的に割り当てられます。

動的制御のコードを作成する方法については、この記事を確認してください- 動的制御イベント、asp.netでのポストバック中のデータを維持する方法

于 2013-09-21T08:24:53.603 に答える