6

我以编程方式将 Web 控件添加到用户控件中我还添加了一个 javascript 事件,将 controlID 作为参数传递,但 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 在哪个页面生命周期生成?

4

2 回答 2

8

在添加属性之前,您需要将控件添加到控件层次结构。

   var txt = new TextBox();
   txt.ID = "MyID"+Number;
   Controls.Add ( txt );
   chkBox.Attributes.Add("onClick", "EnableTxtBox('" +txt.ClientID + "');");

ControlCollection 不是普通的集合;它在添加控件时通知所有者控件,并且控件可以采取适当的操作。

于 2008-11-18T22:57:48.323 回答
2

您应该能够在 OnPreRender() 期间添加该属性。INamingContainer 有时很痛苦……

于 2008-11-18T23:13:19.727 回答