Page.FindControl方法找不到指定控件的原因
原创
©著作权归作者所有:来自51CTO博客作者张善友的原创作品,请联系作者获取转载授权,否则将追究法律责任
在ASP.NET 2.0中,引入了MasterPage的机制,在当前页使用MasterPage的情况下,放在 ContentPlaceholder1这样的内容页的控件无法用Page.FindControl来查找,原因何在?
MSDN对FindControl的解释:在当前的命名容器中搜索带指定 id 参数的服务器控件
这里有一篇文章阐述阐述FindControl方法和INamingContainers接口:[url]http://www.odetocode.com/Articles/116.aspx[/url]
FindControl方法是在当前naming container查找指定ControlID对应的控件,该naming container是一个实现了INamingContainer接口的对象。
可以在该页的页指令中添加 Trace=Ture 指令来跟踪页面输出查看控件树。一个页面的控件树中,Page对象必然是顶级的naming container,但绝非必然是唯一的naming container。譬如当有GridView存在的话,GridView其实也是一个naming container,要找GridView中的一个ControlID,就不能用Page.FindControl,而得用[GridView对象].FindControl方法。
很多时候,因为是动态控件,明知道是在同一个naming container中,但不知道该naming container是什么对象,一个控件要找到另一个控件,可以用this.Parent.FindControl方法。
自由、创新、研究、探索……
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
ShiroFilterFactoryBean 找不到的原因
是因为参考的那篇shiro的博客,没有引入这个依赖的原因
shiro apache spring -
非使用FindControl方法找到深层嵌套的控件
首先看下示意图上图中,有七层MasterPage嵌套,最后一层MasterPage有一个ASPX网页,在ASPX网页上有一个ASCX用户控件,在ASCX用户控件有一个TextBox控件。在第一层的MasterPage拉一个Button和一个Label控件。 如今想
UserControl TextBox Interface aspx Masterpage