Динамическое добавление одного и того же UserControl несколько раз
-
26-10-2019 - |
Вопрос
У меня есть простой Usercontrol, который я создал, который просто позволяет пользователю ввести дату. В настоящее время у него есть единственный текстовый поток с id = "tbdate". Я пытаюсь динамически добавить это управление несколько раз через (например) placeholder.Controls.Add(LoadControl())
Но получаю ошибку «запись с тем же ключом уже существует». Возможно, я мог бы изменить идентификатор элементов, но тогда было бы трудно получить значение, введенное пользователем.
У кого -нибудь есть идея по этому поводу?
Спасибо!
Решение
Я генерирую уникальный идентификатор как часть класса компонентов, который я создал, а затем использую это значение в качестве 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 должен быть установлен, чтобы избежать ошибки.
Спасибо