前台:   <asp:Panel ID="pnl1" runat="server" Visible="false">
              111111111111
            </asp:Panel>
            <asp:Panel ID="pnl2" runat="server" Visible="false">
               2222222222222
            </asp:Panel>后台:    protected void Page_Load(object sender, EventArgs e)
    {
        
        setcontent();
    }
    private void setcontent()
    {
        String d = Request.QueryString["id"] == null ? "1" : Request.QueryString["id"]; //这里d确定已经取到值不是这里的问题
        ((Panel)this.Page.FindControl("pnl" + d)).Visible = true; //这一句报 未将对象引用设置到对象的实例
    }
谢谢!!!

解决方案 »

  1.   

    FindControl("pnl" + d)
    生成能成功????
      

  2.   

    如果你带的参数是1或者2或者NULL以外的值  比如说3
    ((Panel)this.Page.FindControl("pnl" + d)) 就变成了((Panel)this.Page.FindControl("pnl3" )) 
    你根本有没 pnl3 这个ID 当然就报错了
      

  3.   

    大哥明显是第一句的问题,你自己跑下就明白了
       private void setcontent()
            {
                String d = Request.QueryString["id"] == null ? "1" : Request.QueryString["id"]; //这里d确定已经取到值不是这里的问题\
                d = "2";
                ((Panel)this.Page.FindControl("pnl" + d)).Visible = true; //这一句报 未将对象引用设置到对象的实例
            }
    这样是没问题的
      

  4.   

    String 换成object看看,,,
      

  5.   

    RP问题 我调试  xxx.aspx?id=1/2 都没问题  哈哈
      

  6.   

    Panel panel = (Panel)this.Page.FindControl("Panel" + 2);
    这个能行吗?我在我机子上能行
      

  7.   

    String d = Request.QueryString["id"] == null ? "1" : (Request.QueryString["id"]).ToString(); 
      

  8.   

     Panel panel = (Panel)this.Page.FindControl("Panel" + d);
    调试看panel的Id
      

  9.   

    是Pnl,你在试一试在load里面写pnl有没有提示pnl1
      

  10.   

    就是 ((Panel)this.Page.FindControl("pnl" + d))  这样不知道为什么取不到
      

  11.   

    你一共就有两个panel
    String d = Request.QueryString["id"] == null ? "1" : "2"; 
      

  12.   

    那就要看你request.QueryString值是多少了
    如果不是2,肯定要报错
    id有多少个,就要有多少个Panel
      

  13.   

    不是这样的 就算我把第一句取id的注释掉 下面直接 ((Panel)this.Page.FindControl("pnl1")).Visible = true  一样报错
      

  14.   

      private void setcontent()
        {
            String d = Request.QueryString["id"] == null ? "1" : Request.QueryString["id"]; 
            Panel p=this.FindControl("pnl"+d) as Panel;
            if(p!=null)
               p.Visible = true; 
        }
      

  15.   


    不知道为什么 p一直==null 。
      

  16.   

    模板页应该没有影响,你panel是不是嵌套在什么里面?