我正在以编程方式将Webcontrols添加到用户控件中我还添加了一个将controlID作为参数传递的javascript事件,但是clientID是我指定的那个,它不包含asp.net生成的那个
var txt = new TextBox();
txt.ID = "MyID"+Number;
chkBox.Attributes.Add("onClick", "EnableTxtBox('" +txt.ClientID + "');");
我可以通过添加父控件ID
来解决这个问题 chkBox.Attributes.Add("onClick", "EnableTxtBox('" + this.ClientID+"_"+txt.ClientID + "');");
在哪个页面生命周期中生成客户端ID?
答案 0 :(得分:7)
在添加属性之前,需要将控件添加到控件层次结构中。
var txt = new TextBox();
txt.ID = "MyID"+Number;
Controls.Add ( txt );
chkBox.Attributes.Add("onClick", "EnableTxtBox('" +txt.ClientID + "');");
ControlCollection不是普通的集合;它会在添加控件时通知所有者控件,并且控件可以采取适当的操作。
答案 1 :(得分:2)
您应该能够在OnPreRender()期间添加该属性。 INamingContainer有时候很痛苦......