2011-01-27 4 views
1

У меня есть простой UserControl, который я создал, который просто позволяет пользователю вводить дату. В настоящее время он имеет одно текстовое поле с идентификатором = tbDate. Я пытаюсь динамически добавить этот элемент управления несколько раз через (например) placeholder.Controls.Add(LoadControl()), но я получаю сообщение об ошибке «Запись с тем же ключом уже существует». Я мог бы, возможно, изменить идентификатор элементов, но тогда было бы сложно захватить значение, введенное пользователем.
У кого-нибудь есть идея?Динамическое добавление одного и того же UserControl несколько раз

Спасибо!

+0

Прошли ли вы с этим McArthey? Я просто сталкиваюсь с чем-то похожим :( – Mordy

+0

Да, я сделал. Прошу прощения за то, что не обновил этот ответ. Я буду, но в то же время не стесняйтесь обращаться ко мне с любыми вопросами, которые у вас есть. Решение было относительно сложным, что может объясните, почему на это никогда не отвечали. – McArthey

ответ

0

Я генерирую уникальный идентификатор как часть класса 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 должен быть установлен во избежание ошибки.

Сказал (а) спасибо:

Смежные вопросы