質問

ユーザーが日付を入力できるようにする単純な 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 を設定する必要があることです。

ありがとう

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top