在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方法。
本文轉自 張善友 51CTO博客,原文鏈接:http://blog.51cto.com/shanyou/73875,如需轉載請自行聯系原作者