我以前也写过类似的函数,贴出来:
#region GetWebControl 递归获取 page 第一个 ID 的 WEB控件
/// <summary>
/// 从 HttpContext.Current.Handler 中递归获取第一个 ID 的 WEB控件
/// </summary>
/// <param name="id">WEB控件的 ID</param>
/// <returns>WEB控件</returns>
public static System.Web.UI.Control GetWebControl(string id) {
if (HttpContext.Current == null) return null;
System.Web.UI.Page page = HttpContext.Current.Handler as System.Web.UI.Page;
if (page == null || string.IsNullOrEmpty(id)) return null;
System.Web.UI.Control val = page.FindControl(id);
return val == null ? GetWebControl(id, page.Controls) : val;
}
static System.Web.UI.Control GetWebControl(string id, System.Web.UI.ControlCollection controls) {
System.Web.UI.Control val = null;
foreach (System.Web.UI.Control control in controls) {
val = control.FindControl(id);
if (val != null) return val;
if (control.Controls.Count > 0) {
val = GetWebControl(id, control.Controls);
if (val != null) return val;
}
}
return val;
}
#endregion