[問題] master aspx usercontrol 互抓控制項

作者: kisha024 (4545454554)   2017-06-23 14:16:39
各位好
我有個master 裡面放3個button, 1個usercontrol UC1(裡面有3個button), 1個aspx
aspx裡面放3個button, 1個usercontrol UC2(裡面有3個button)
配置如下圖
http://i.imgur.com/ZnVqYXy.png
如果想點button10抓到button7
如下寫法 可以work
Button btn = (Button)this.Page.Master.FindControl("ContentPlaceHolder1")
.FindControl("Button7");
如下寫法 會出錯
Button btn = (Button)this.Page.FindControl("Button7");
我的問題是 既然Button7在aspx裡面
為什麼Page.FindControl("Button7")會抓不到控制項?
只能一路往上到master 再往下到Page.FindControl("Button7")才抓得到嗎?
是否有更簡潔的寫法?
謝謝 
程式碼如下
https://www.sendspace.com/file/t7o4ty
作者: J002 (阿里山 我來了XD~)   2017-06-23 19:32:00
因為你的button7是另外包在user control裡面吧?
作者: kisha024 (4545454554)   2017-06-23 20:24:00
並沒有 本例中只有兩個user control
作者: te426odin (小胖老師)   2017-06-24 09:46:00
this.page只會去找在page裡面control而不會再去找control裡面的control應該說FindControl這個方法是這樣你可拉一個Girdview裡面放一個Label,然後用你第二個寫法試試看就知道了
作者: Laluth (陽光)   2017-06-25 01:34:00
因為this.Page 底下只有一個控制項 叫做MasterPage所有其他的控制項都是在它"裡面" 被他包起來
作者: J002 (阿里山 我來了XD~)   2017-06-25 15:19:00
剛剛開了您的程式碼,是有抓到Button1的抓的是第二個phvs7z那部份但若是有包了MasterPage,就會跟Laluth大說的一樣,aspx底下只有一個MasterPage的Control,所以FindControl當然會找不到button

Links booklink

Contact Us: admin [ a t ] ucptt.com