比如
Control ctl1 = new Control();
Control ctl2 = new Control();
ctl2.ID = "1";
ctl1.Controls.Add( ctl2 );在页面上最后生成的ctl2的ID很可能是ctl0_1,而不是1,我想知道如何才能使这个控件的ID为1200分,搞定就给

解决方案 »

  1.   

    没办法做到,也不应该做到!
    why?
    页面上最后生成的ctl2的ID是由ct12所处的控件树决定的.
    即: 控件在客户端的ID与其父控件的ID有关.(这样能保证客户端元素ID的唯一性)虽然我们没办法控制客户端的ID,但是可以获取控件最终在客户端生成的ID:
    利用ct12.ClientID
      

  2.   

    如果是想在客户端取得控件可以 :document.all.<%= TextBox1.UniqueID.Replace(":", "_")%>如果是嫌ID串太长占用资源,那没办法,因为这个ID是根据控件嵌套关系,根据树型结构生成的,防止冲突用。
      

  3.   

    ClientID必须保证整个HTML文档中的唯一性,所以是必须由ASP.NET根据控件树的逻辑以及每一个控件的ID来生成的。如果一个父控件被封装了,那么它在同一个页面出现几次时它的子控件也出现几次,此时这几个子控件就会ID相同,ASP.NET的解决方法就是ClientID加上父控件的ID从而避免ID相同的控件ClientID也相同。
      

  4.   

    不知道lz要控制他生成的控件id做什么,你如果想在客户端访问该控件的话,可以用变通的方法 把他的clientid 传递给客户端,再使用啊~