我创建了一个简单的 UserControl,它只允许用户输入日期。目前,它有一个 ID="tbDate" 的文本框。我试图通过(例如)多次动态添加此控件,placeholder.Controls.Add(LoadControl())
但收到错误“已存在具有相同键的条目”。也许,我可以更改元素的 ID,但是很难获取用户输入的值。
有人对此有想法吗?
谢谢!
我创建了一个简单的 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);
希望这会有所帮助。如果您有任何问题,请随时提问。但是,问题的根源在于必须设置 Control.ID 以避免错误。
谢谢