同じ UserControl を複数回動的に追加する
-
26-10-2019 - |
質問
ユーザーが日付を入力できるようにする単純な UserControl を作成しました。当面は、ID="tbDate" の Textbox が 1 つあります。このコントロールを(たとえば)を介して複数回動的に追加しようとしています placeholder.Controls.Add(LoadControl())
しかし、「同じキーを持つエントリがすでに存在します」というエラーが表示されます。おそらく要素の ID を変更することもできますが、その場合、ユーザーが入力した値を取得するのは困難になります。
これについて何か考えがある人はいますか?
ありがとう!
解決
作成した Component クラスの一部として一意の識別子を生成し、その値を Control.ID として使用します。この一意の値は任意の方法で生成できますが、ここではデータベース テーブルの一部として保存しています。クラスがインスタンス化されると値が初期化され、アプリケーションの実行全体を通じて一貫性が保たれるため、最終的にはそれほど重要ではありません。
クラスにはプライベート インスタンス変数があります。
private Control _control;
コントロールをフォーム (特にプレースホルダー) に追加するときは、これと同様のことを行います。ご了承ください c
私が作成したクラスを参照します。
c.Control.ID = c.ComponentName + c.UniqueIdentifier;
phHere.Controls.Add(c.Control);
その後、後でコントロールを参照する必要がある場合は、基本的に上記の手順を逆に実行します。
string component = c.ComponentName + c.UniqueIdentifier;
UserControl uc = (UserControl)ph.FindControl(component);
これがお役に立てば幸いです。ご質問がございましたら、お気軽にお問い合わせください。ただし、問題の根本は、エラーを回避するには Control.ID を設定する必要があることです。
ありがとう
所属していません StackOverflow