我有几个用户控件,比方说A
,B
,C
和D
。根据一些随机输入,我需要生成这些组合。对于例如如果输入是2a3d1a2c
我需要在之后显示两个A,三个D,再一个A等等。
我还需要稳定clientid以使它们正常工作。因为每个控件都使用自己的ClientID
属性来收集自身的输入。对于例如用户控件A在内部生成名为this.ClientID + "$input1"
的输入,并从Request[this.ClientID + "$input1"]
之类的请求中收集其输入。由于可以有多个A,因此每个A在回发后需要具有相同的(unique) ClientID
才能从请求中获得正确的输入。
答案 0 :(得分:0)
要动态添加控件,您可以使用面板作为占位符,例如
<asp:Panel ID="ControlPlaceholder" runat="server" />
然后,在服务器端,您可以像这样添加对象:
int controlCount = 0;
...
TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);
如果在Page_Load事件期间向其添加控件并使用生成控件ID的一致方法(例如上面的简单计数),则任何视图状态或事件绑定将重新绑定到正确的对象上回发。