2011-01-27 38 views
1

私はユーザーが日付を入力するだけの簡単なUserControlを作成しました。当面はID = "tbDate"のテキストボックスを1つ持っています。私は動的にこのコントロールを複数回(例えば)placeholder.Controls.Add(LoadControl())経由で追加しようとしていますが、「同じキーのエントリが既に存在します」というエラーが表示されています。おそらく要素のIDを変更することはできますが、ユーザーが入力した値を取得することは難しいでしょう。
これについて誰かが考えていますか?複数の同じUserControlを動的に追加する

ありがとうございます!

+0

このMcArtheyで進歩したことはありますか?私はちょうど同じようなものに遭遇しています:( – Mordy

+0

はい、私はこの回答を更新しないと申し訳ありませんが、私はあなたに質問をしながら私に連絡しています。それが決して答えられなかった理由を説明してください。 – McArthey

答えて

0

私は作成した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を設定する必要があるということです。

ありがとうございました