我用了三种方式:
targetGridControl = this.Page.FindControl("grid")  
targetGridControl = this.Page.Master.FindControl("grid") 
targetGridControl = this.FindControl("grid") 在自定义控件的OnPreRender/Render和CreateChildControls方法中都找不到该控件, 
该Grid控件在页面确实存在.
   
原因是: 我的Test.aspx页面继承了MasterPage之后就找不到了; 如果不继承MasterPage是可以找到该控件的.如果一定要用到MasterPage, 应该怎么解决?谢了!

解决方案 »

  1.   

    “Master.FindControl("ContentPlaceHolder1").FindControl("你要查找的控件ID")”来查找
      

  2.   

    你的控件id被改变了
    变成ContentPlaceHolder_controlname这种形式
    你看看变成什么了
    察看源代码可以看见
      

  3.   

    OnPreRender/Render在页面呈现之前并没有加载你想要的控件,你在其它的地方可以试一下,看能不能找到,可以把页面Trace="true"加上,看看你的控件名称有没有错误
      

  4.   

    楼主没有理解Master与Page加载的先后顺序母版面与内容页事件加载顺序这样的:母版页控件初始化
    内容页控件初始化
    母版页初始化
    内容页初始化
    内容页加载
    母版页加载
    ...在母版页控件初始化的时候,内容页控件还没有初始化,怎么能加载?
      

  5.   

    LS说的不错,另外就是ASP.NET控件树的问题,首先控件不是在Page的ControlCollection下的,它的下面只有一个根,根下面一般有3个分支,分支下面才能找到,例如:
    foreach(Control c in page.Controls)
    {
       c.Controls.FindControl("");
    }
    如果还在下一层的话就继续遍历