Frage

Ich habe ein einfaches Usercontrol, das ich erstellt habe, mit dem ein Benutzer einfach das Datum eingeben kann. Derzeit hat es ein einzelnes Textfeld mit id = "tbdate". Ich versuche, diese Steuerung dynamisch mehrmals über (zum Beispiel) dynamisch hinzuzufügen (zum Beispiel) placeholder.Controls.Add(LoadControl()) Ich erhalte jedoch den Fehler "Ein Eintrag mit demselben Schlüssel ist bereits existiert". Ich könnte vielleicht die ID der Elemente ändern, aber dann wäre es schwierig, den vom Benutzer eingegebenen Wert zu greifen.
Hat jemand eine Idee dazu?

Vielen Dank!

War es hilfreich?

Lösung

Ich generiere eine eindeutige Kennung als Teil einer Komponentenklasse, die ich erstellt habe, und verwende diesen Wert dann als Kontrolle.id. Sie können diesen einzigartigen Wert so generieren, wie Sie möchten, aber ich speichere ihn als Teil einer Datenbanktabelle. Am Ende ist es nicht so wichtig, dass die Werte während des gesamten Laufs der Anwendung initialisiert und konsistent werden, wenn die Klasse instanziiert wird.

Die Klasse hat eine private Instanzvariable:

private Control _control;

Wenn ich die Kontrolle zum Formular hinzufügen (und insbesondere den Platzhalter), mache ich etwas, das dem ähnlich ist. Beachten Sie, dass c Referenzen auf meine erstellte Klasse.

c.Control.ID = c.ComponentName + c.UniqueIdentifier;
phHere.Controls.Add(c.Control);

Wenn ich dann die Kontrolle zu einem späteren Punkt verweisen muss, kehre ich die obigen Schritte im Wesentlichen um:

string component = c.ComponentName + c.UniqueIdentifier;
UserControl uc = (UserControl)ph.FindControl(component);

Hoffentlich hilft das. Wenn Sie Fragen haben, können Sie bitte fragen. Die Wurzel des Problems ist jedoch, dass die Steuerung.ID festgelegt werden muss, um den Fehler zu vermeiden.

Vielen Dank

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top