2011-01-27 6 views
1

J'ai un UserControl simple que j'ai créé et qui permet simplement à un utilisateur d'entrer la date. Pour le moment, il a une seule Textbox avec ID = "tbDate". J'essaie d'ajouter dynamiquement ce contrôle plusieurs fois via (par exemple) placeholder.Controls.Add(LoadControl()) mais je reçois l'erreur "Une entrée avec la même clé existe déjà". Je pourrais, peut-être, changer l'ID des éléments, mais il serait alors difficile de saisir la valeur entrée par l'utilisateur.
Est-ce que quelqu'un a une idée à ce sujet?Ajouter dynamiquement le même UserControl plusieurs fois

Merci!

+0

Avez-vous déjà fait des progrès avec ce McArthey? Je rencontre juste quelque chose de similaire moi-même :( – Mordy

+0

Oui je l'ai fait Je suis désolé de ne pas avoir mis à jour cette réponse Je le ferai, mais en attendant, n'hésitez pas à me contacter si vous avez des questions. expliquer pourquoi il n'a jamais été répondu. – McArthey

Répondre

0

Je génère un identifiant unique dans le cadre d'une classe Component que j'ai créée, puis j'utilise cette valeur comme Control.ID. Vous pouvez générer cette valeur unique comme vous le souhaitez, mais je la stocke dans une table de base de données. En fin de compte, ce n'est pas si important puisque lorsque la classe est instanciée, les valeurs sont initialisées et cohérentes tout au long de l'exécution de l'application.

La classe a une variable d'instance privée:

private Control _control; 

Lorsque vous ajoutez le contrôle à la forme (et, plus précisément, l'espace réservé) Je fais quelque chose de similaire à ce sujet. Notez que c fait référence à ma classe créée.

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

Puis, quand je dois faire référence au contrôle à un point plus tard, j'inverse essentiellement les étapes ci-dessus:

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

Espérons que cela aide. Si vous avez des questions, n'hésitez pas à demander. La racine du problème, cependant, est que le Control.ID doit être défini afin d'éviter l'erreur.

Merci

Questions connexes