1

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

ありがとう!

4

1 に答える 1

0

作成したコンポーネント クラスの一部として一意の識別子を生成し、その値を 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 を設定する必要があることです。

ありがとう

于 2011-07-08T12:53:31.583 に答える