1

まず、動的に作成されたユーザーコントロールが再作成され、ポストバック時に正しい情報が再入力されるWebアプリケーションを作成することができました。私の問題が何であるかはわかりませんが、私の状況に基づいて私がそれを理解するのを手伝ってくれることを願っています:

私のページで、作成するコントロールの数をハードコードされたテキストボックス(aspxページにあります)に入力し、[OK]ボタンをクリックします。これにより、バックグラウンドでc#を使用して、指定された数のユーザーコントロールが動的に作成されます。

これまでのところ、必要な数の動的コントロールがページの表にあります。次...

各動的ユーザーコントロールに1つのテキストボックスと4つのドロップボックスがあります。テキストボックスフィールドに会社名を入力してEnterキーを押すか、(テキスト変更イベントで)クリックすると、自動投稿が返され、テキストボックスには入力した会社名が保持されます。

この文字列に基づいて、ドロップボックスがデータベースから入力されます。ドロップボックスから目的のアイテムを選択して保存ボタン(ダイナミックコントロールの外側のページ上にあります)をクリックすると、データベースに挿入されますが、このポストバック時にドロップボックスからのインデックスがリセットされ、間違った値が挿入されます。

次の写真は、最初にそれがどうあるべきか、そしてそれがどうあるべきかを示しています。

基本的に、会社名は動的コントロールのテキストボックスに残りますが、ドロップボックスから選択した情報は最初のインデックスにリセットされます。

どうあるべきか

本当にどうですか

4

2 に答える 2

1

コードなしで何が起こったのかを知るのは難しいですが、これはよくある間違いです。

ページ読み込みイベントでドロップダウンリストコントロールを入力/作成し、ポストバックすると、コードはコントロールを再入力/再作成します。If(!IsPostBack)そのため、ページ読み込みイベントのようなものを使用する必要があります。それ以外の場合は、ポストバックを実行するたびにそのコードを実行し、実際にはそのボタンのイベントハンドラーでコードを実行したいだけです。

于 2013-01-23T14:33:04.243 に答える
1

コントロールを動的に作成している場合は、必ずPage_Initイベントでそれを行ってください。ポストバックごとに動的コントロールを再作成する必要があります。これらの状態は Page_Init (ポストバックの場合) の後に復元されるため、Page_Load上書きする場合にのみ値を設定してください。

于 2013-01-23T14:39:44.817 に答える