Динамическое добавление одного и того же UserControl несколько раз - PullRequest
1 голос
/ 27 января 2011

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

Спасибо!

1 Ответ

0 голосов
/ 08 июля 2011

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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...