Динамическое добавление одного и того же UserControl несколько раз
У меня есть простой UserControl, который я создал, который просто позволяет пользователю вводить дату. В настоящее время он имеет одно текстовое поле с ID="tbDate". Я пытаюсь динамически добавить этот элемент управления несколько раз через (например) placeholder.Controls.Add(LoadControl())
но я получаю сообщение об ошибке "Запись с таким же ключом уже существует". Я мог бы, возможно, изменить идентификатор элементов, но тогда было бы трудно получить значение, введенное пользователем.
У кого-нибудь есть идеи по этому поводу?
Спасибо!
1 ответ
Я генерирую уникальный идентификатор как часть созданного мной класса Component, а затем использую это значение в качестве 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 должен быть установлен во избежание ошибки.
Спасибо