能不能禁止 服务器控件客户端ID名字改变???
问题如下: 
 服务器控件放置在模板页中, <asp:TextBox   ID= "txtName "   runat= "server ">  </asp:TextBox>  
 执行以后: 
  <input   name= "ctl00$ContentPlaceHolder1$txtName "   type= "text "   id= "ctl00_ContentPlaceHolder1_txtName "   />    
 这样javascript脚本很不好操作,有没有办法让他的id和name运行后不改变呢? 
 (注:如果不使用模板,做一个简单页面,服务器控件的id运行后不会改变。)
------解决方案--------------------你写后台代码时用 this.txtName  
 就能获取客户端输入的值
------解决方案--------------------据我所知,目前没办法,生成的HTML的ID肯定带ctl00_Content_
------解决方案--------------------貌似没有办法,GridView里面的控件的ClientID是只读的 
 生成出来的每行的ID倒是可以自己定义ID 
         for (int i = 0; i  < GridView1.Rows.Count; i++) 
         { 
             GridView1.Rows[i].Attributes[ "id "] =  "mytr " + i.ToString();  
         }
------解决方案--------------------把你操作那个控件的JS从后台写入就可以了。   
 this.Response.Write( " <script> javascript:document.getElementById( ' " + TextBox1.ClientID +  " ') </script>  ");   
 如果出发事件的是TextBox本身的话更好办。   
 只要在JS中 
 oEl = event.srcElement; 
 那么oEl就是触发事件的控件,那样就不用getElementById了     
------解决方案--------------------不可能禁止这个功能,如果能禁止,那ASP.NET就难做了,呵呵。   
 用ClientId来取客户端id进行操作吧
------解决方案--------------------var obj=document.getElementById( " <%=TextBox1.ClientID% ");
------解决方案--------------------现在就是这样,将就一下吧
------解决方案--------------------为了保证html内id的唯一性才这么做的 怎么会是问题 
 Control.ClientID返回的就是你要的id
------解决方案--------------------我的解决方法: 
 在控件旁边加一个 <div id= "这里的ID有规律 " /> ,如: 
  <asp:TextBox ID= "txtName " runat= "server ">  </asp:TextBox>  <div id= "myDiv_1 " />    
 在js中: 
 document.getElementById( "myDiv_1 ").previousSibling来引用就可以了
------解决方案--------------------  我的解决方法: 
 在控件旁边加一个 <div id= "这里的ID有规律 " /> ,如: 
  <asp:TextBox ID= "txtName " runat= "server ">  </asp:TextBox>  <div id= "myDiv_1 " />    
 在js中: 
 document.getElementById( "myDiv_1 ").previousSibling来引用就可以了     
 ------------- 
 真是好方法。