http://topic.csdn.net/u/20081117/15/da1b0c42-4341-4ed0-ae28-b78886a254aa.html
完了 没说清楚 比如说引用了模板页的页面中的控件 他的id并不是我们定义的id 
打开源文件看一下,比如:ctl00_Main_ShareClasstbx2我定义的id为 shareclasstbx2 
不知道各位听明白没有 
我问的问题的是 用panel隐藏后客户端的id没有了 

解决方案 »

  1.   

    这个好像不是问题,这是个陈述句,你要问的是不是,用panel隐藏后客户端的id没有了,我要怎么获取到?
      

  2.   

    没用过panel,估计有两个可能
    1.panel是服务器端控件
    2.需要通过panel获取放在panel中的控件
      

  3.   

    你用masterpage了?用了的话会这样我知道,但你后台代码应该不影响使用,js的话可以clientid
      

  4.   

    Style.Add("display","none")
    应该这样隐藏,试试html
    style="display:none"
      

  5.   

    输出到客户端的id不是服务器控件的id,这两个id是两个概念。客户端id在服务器端是控件的ClientID方法得到的。也许突然有一天,asp.net修改了底层的生成ClientID的规则,甚至一个页面一种规则,你怎能“跑到客户端看看id然后硬编码到后台程序上”?这是不对的。你写程序的时候不要去管客户端id最终输出的是什么,应该使用ClientID来动态产生你的脚本中的变动部分。
      

  6.   

    刚刚接触asp.net的人,急功近利,可能养成习惯,去看客户端id然后硬编码到后台设计中。这样的代码我是从来不维护的,维护不起。
      

  7.   

    代码执行到客户端的时候,在后台用Visible="false"隐藏的控件当然是没有了,要用style="display:none"来隐藏
    如果需要在JavaScript中取值,要用.ClientID传值就可以了。.aspx文件
    <asp:Panel ID="pnl" runat="server" style="display:none;">
      <asp:HiddenField ID="hdn" runat="server" Value="1" /> 
    </asp:Panel><script language="javascript">
    window.onload = function()
     {
       alert(document.getElementById("<%= Names%>").value);
     }
    </script>
    .cs文件
    public string Names= string.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Names = this.hdn.ClientID;
    }
      

  8.   


    你这样隐藏后,再看客户端是有ID的了
    panel.Attributes.CssStyle.Add(HtmlTextWriterStyle.Display, "none");