我有一个简单的USERCONTROL,我创建了一个简单的用户,仅允许用户输入日期。目前,它具有一个带有ID =“ tbdate”的文本框。我正在尝试通过(例如)多次动态添加此控件 placeholder.Controls.Add(LoadControl()) 但是正在收到“已经存在相同密钥的条目”的错误。也许我可以更改元素的ID,但是很难抓住用户输入的值。
有人对此有任何想法吗?

谢谢!

有帮助吗?

解决方案

我生成一个唯一的标识符作为我创建的组件类的一部分,然后将该值用作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);

希望这会有所帮助。如果您有任何疑问,请随时提出。不过,问题的根源是必须设置控件。ID以避免错误。

谢谢

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top