Chỉnh sửa: sau khi đọc lại câu hỏi của bạn, tôi đã có một đâm vào nó dựa trên các liên kết thứ hai trong bài viết của tôi:
public static T FindControl<T>(System.Web.UI.Control Control) where T : class
{
T found = default(T);
if (Control != null && Control.Parent != null)
{
if(Control.Parent is T)
found = Control.Parent;
else
found = FindControl<T>(Control.Parent);
}
return found;
}
Xin lưu ý, chưa được kiểm tra, chỉ cần thực hiện lập ngay bây giờ.
Dưới đây để tham khảo.
Có một chức năng phổ biến được gọi là FindControlRecursive, nơi bạn có thể đi bộ cây điều khiển từ trang xuống để tìm điều khiển với một ID cụ thể.
Dưới đây là một thực hiện từ http://dotnetslackers.com/Community/forums/find-control-recursive/p/2708/29464.aspx
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
Bạn có thể sử dụng điều này như:
var control = FindControlRecursive(MyPanel.Page,"controlId");
Bạn cũng có thể kết hợp nó với điều này: http://weblogs.asp.net/eporter/archive/2007/02/24/asp-net-findcontrol-recursive-with-generics.aspx để tạo ra một phiên bản đẹp hơn.
Nguồn
2012-04-15 21:57:58
không Đây có phải là một cách sai lầm xung quanh? OP yêu cầu tìm kiếm ở trên nhưng điều này là tìm kiếm nếu tôi không nhầm. – ChrisWue
Vâng, bạn nói đúng, nhưng điều này nên đặt anh ta/cô ấy trên các dòng bên phải .. –
được cập nhật với triển khai thử nghiệm. –