[問題] master aspx usercontrol 互抓控制項
各位好
我有個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
-------------------------------------------------------------
剛剛做了個測試 先把master拿掉 只看aspx和usercontrol
也就是aspx裡面放了1個Button1 和1個ausercontrol UC1(裡面放了1個Button2)
配置如下
http://i.imgur.com/BRNbZqL.png
現在目標是:點Button2抓到Button1
結果同樣的語法 如下 就抓得到控制項了
Button btn = (Button)this.Page.FindControl("Button1");
也就是把aspx放到master裡面 上述語法就抓不到控制項
真搞不懂到底是為什麼?
程式碼如下
https://www.sendspace.com/file/phvs7z
-------------------------------------------------------------------
找到解答了 只要把Page改成Parent就好了
Button btn = (Button)this.Page.FindControl("Button7"); 原寫法
Button btn = (Button)this.Parent.FindControl("Button7"); 新寫法
之前太先入為主了 以為Page裡面會有Button7
其實有什麼控制項 應該要用Controls 一個一個列出來看 如下
ControlCollection collect = (ControlCollection)this.Page.Controls;
foreach (Control C in collect)
{
Response.Write(C.ID + " ");
}
在foreach裡面設中斷點觀察 這樣 有什麼控制項都可以知道 就不用瞎猜了
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1498198601.A.C08.html
推
06/23 19:32, , 1F
06/23 19:32, 1F
→
06/23 20:24, , 2F
06/23 20:24, 2F
→
06/24 09:46, , 3F
06/24 09:46, 3F
→
06/24 09:46, , 4F
06/24 09:46, 4F
但Button7就在page裡面啊 並非你說的control裡面的control 而僅是control
→
06/24 09:47, , 5F
06/24 09:47, 5F
推
06/24 09:55, , 6F
06/24 09:55, 6F
→
06/24 09:55, , 7F
06/24 09:55, 7F
推
06/25 01:34, , 8F
06/25 01:34, 8F
→
06/25 01:34, , 9F
06/25 01:34, 9F
推
06/25 15:19, , 10F
06/25 15:19, 10F
推
06/25 15:26, , 11F
06/25 15:26, 11F
→
06/25 15:27, , 12F
06/25 15:27, 12F
→
06/25 15:28, , 13F
06/25 15:28, 13F
→
06/25 15:28, , 14F
06/25 15:28, 14F
謝謝大家
※ 編輯: kisha024 (60.251.182.5), 06/26/2017 08:29:02