我有一个页面是用了母版页的,里面有个控件GridView1,在.cs中使用Page.FindControl("GridView1")找不到,试过用Page.FindControl("ctl00_ContentPlaceHolder1_GridView1")也不行,这是为什么?我试过不用母版页就正常.请高手赐教.

解决方案 »

  1.   

    你的GridView在Page里,还是在MasterPage上?
      

  2.   

    我在这个帖子
    http://topic.csdn.net/u/20081214/19/56B6B999-BD7C-48E3-9B2F-61A3AB0CCF57.html
    里边说到过FindControl的机制。你可以看看自己看过的关于FindControl功能描述的文章,或者书籍,是写书的人太马虎了没有写明还是自己太马虎了看了而没有任何记忆?FindControl绝非想当然地匹配字眼就理解其功能了,必须知道其具体的机制。我们正好可以用这个(这类)的简单问题来考察一个asp.net程序员是否真的懂asp.net超过30%了。
      

  3.   

    master page在运行时它就是page里边的一个用户控件,而用户控件实现了INamingContainer接口,于是FindControl在挖掘内部控件时遇到它,就不会再去它内部挖掘了。
      

  4.   

    通过this.Master获取直系Master,让后this.Master.Master可以获取父Master
    Master.Master.FindControl("")
    TextBox textBoxFind = (TextBox)this.Page.Master.FindControl(masterPageContentPlaceHolderID).FindControl("");