多次动态添加相同的UserControl

时间:2011-01-27 20:30:43

标签: user-controls loadcontrol

我创建了一个简单的UserControl,它只允许用户输入日期。目前,它有一个ID =“tbDate”的文本框。我试图通过(例如)placeholder.Controls.Add(LoadControl())多次动态添加此控件但是收到错误“具有相同键的条目已存在”。或许,我可以更改元素的ID,但是很难获取用户输入的值 有没有人对此有所了解?

谢谢!

1 个答案:

答案 0 :(得分: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以避免错误。

由于