有許多人都可能曾經為在背景寫代碼時找到不到前台的控件發愁過,當然曾經的我也是非常的苦惱的,我就通過這篇文章将我的一些經驗告訴給大家。
下面我就以Grid控件為例子給大家講解。
首先我先講解一種最簡單的方法,一般最簡單的方法都是有一些局限性的。
TextBox TextBoxName = (TextBox)e.Item.FindControl("TextBoxName");
TextBox就是控件的控件名,“TextBoxName”不用說了就是控件的ID了。
它的局限性就是需要e的屬性是GridCommandEventArgs才可以的,譬如:
protectedvoid RridTest_ItemCommand(object source, GridCommandEventArgse)
{
}
在這種情況下我們還可以使用一種方法,
GridEditableItem editedItem = e.Item asGridEditableItem;
string WickedID = editedItem["WickedID"].Text;
當然它的局限性也是上面的那個。
但是當我們使用RadioButton或CheckBox等不能使用GridCommandEventArgs或者不能使用CommandName屬性的控件時候在Grid中我們又能怎樣去擷取呢,下面我給大家一個方法,這個方法是我在網上尋找的,今天我給大家粘貼過來一起看看
RadioButton RadioButtonOther =(RadioButton)FindControlEx(GridTest,"RadioButtonOther");
///<summary>
///遞歸查找找指定ID的控件
///</summary>
///<param name="Parent">父控件控件容器)</param>
///<param name="id">要查找的控件ID</param>
///<returns>回傳ä符合ID的控件,若未找到則傳回Null</returns>
public System.Web.UI.ControlFindControlEx(System.Web.UI.Control Parent, string id)
{
System.Web.UI.Control oCtrl = null;
//先使用FindControl 去查找指定的子控件
oCtrl =Parent.FindControl(id);
//如果未找到則往下層遞歸方式去查找°
if (oCtrl == null)
{
foreach (System.Web.UI.ControloChildCtrl in Parent.Controls)
{
//以遞歸方式回調原函數
oCtrl = FindControlEx(oChildCtrl, id);
//如果找到指定控件則退出循環
if (oCtrl != null)break;
}
}
return oCtrl;
}
下手試試看看是不是很好用的。感謝一下上面代碼的作者。
如果你還一些更好的方法,也可以發出來和大家共享。謝謝。
本文轉自HDDevTeam 51CTO部落格,原文連結:http://blog.51cto.com/hddev/1253733,如需轉載請自行聯系原作者