2012年3月28日 星期三

ASP.NET 神奇FindControl方法

說到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了

沒有留言:

張貼留言