2014年3月26日 星期三

[轉貼] ASP.NET 神奇FindControl方法

出處:http://weisnote.blogspot.tw/2012/03/aspnet-findcontrol.html

說到ASP.NET最常用的方法,FindControl一定有被提名
平常在用沒什麼就這樣就OK

TextBox tb = this.Page.FindControl("TextBox1") as TextBox;


之後想幹嘛就幹嘛
但是如果有套用主版頁面的話這方法就失靈囉,總是見到怒毆大神,然後就怒毆電腦
正解如下

TextBox tb = this.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1") as TextBox;


先用 this.Master 選到主版,在慢慢向下一層層找
對,這方法很邪門不像 WinFrom 的 Control.ControlCollection.Find 方法,有第二個參數
對於有套主版或者像是 GridView ItemTemplate 裡面的都無法找到
假如有2個都叫TextBox1的鬼東西
一般得這麼做才能對他操作
如果還有用巢狀主版的話,好不好玩?
佐藤ポヨ表示:自己寫個 擴充方法 吧
在類別庫建立個靜態類別寫擴充方法
擴充方法細則參閱MSDN
把類別加入參考後,Control 就能用 doFindControl 跟 doFindControls 擴充方法
使用方式
好啦,地獄兩百層的控制項也能Find了

沒有留言:

張貼留言