6

私はプログラムでユーザーコントロールにWebコントロールを追加していますが、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 はどのページのライフサイクルで生成されますか?

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 に答える