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