Question

J'ai simple UserControl que j'ai créé qui permet simplement à un utilisateur d'entrer la date. Pour l'instant, il a une seule zone de texte avec ID = « tbDate ». Je suis en train d'ajouter dynamiquement ce contrôle plusieurs fois par (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 saisie par l'utilisateur.
Est-ce que quelqu'un a une idée à ce sujet?

Merci!

Était-ce utile?

La solution

I générer un identificateur unique en tant que partie d'une classe de composants que j'ai créé et ensuite utiliser cette valeur comme la Control.ID. Vous pouvez générer cette valeur unique de quelque façon que vous voulez mais je suis le stocker dans le cadre d'une table de base de données. En fin de compte, il est pas important car lorsque la classe est instancié les valeurs sont initialisés et cohérente tout au long de l'exécution de l'application.

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

private Control _control;

Lors de l'ajout du contrôle à la forme (et, plus précisément, l'espace réservé) Je fais quelque chose de similaire à ce sujet. Notez que les références de c ma classe créée.

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

Alors 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, ne hésitez pas à demander. La racine du problème, cependant, est que le Control.ID doit être réglé afin d'éviter l'erreur.

Merci

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top