在jQuery中有一个名为.parents('xx')的酷函数,它使我能够从DOM树中的某个对象开始,并在DOM中向上搜索以查找特定类型的父对象。
现在我在C#代码中寻找相同的东西。我有asp.net panel
有时会坐在另一个父母小组中,有时甚至是2或3个父小组,我需要向上走过这些父母,最后找到我正在寻找的UserControl
。
在C#/ asp.net中有一种简单的方法吗?
答案 0 :(得分:2)
编辑:在重新阅读您的问题后,我根据帖子中的第二个链接进行了搜索:
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;
}
请注意,未经测试,现在就做好了。
以下供参考。
有一个名为FindControlRecursive的常用函数,您可以从页面向下走控制树以查找具有特定ID的控件。
以下是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;
}
你可以使用它:
var control = FindControlRecursive(MyPanel.Page,"controlId");
您也可以将其与此结合使用:http://weblogs.asp.net/eporter/archive/2007/02/24/asp-net-findcontrol-recursive-with-generics.aspx以创建更好的版本。
答案 1 :(得分:2)