C#相当于jQuery.parents(类型)
在jQuery中有一个很酷的函数叫做.parents('xx'),它使我能够从DOM树中的某个对象开始,并在DOM中向上搜索以找到特定类型的父对象 现在我在C代码中寻找同样的东西。我有一个C#相当于jQuery.parents(类型),c#,asp.net,C#,Asp.net,在jQuery中有一个很酷的函数叫做.parents('xx'),它使我能够从DOM树中的某个对象开始,并在DOM中向上搜索以找到特定类型的父对象 现在我在C代码中寻找同样的东西。我有一个asp.net面板,它有时位于另一个父面板中,有时甚至位于2或3个父面板中,我需要向上遍历这些父面板,最终找到我正在寻找的UserControl 在C#/asp.net中有没有一种简单的方法可以做到这一点 编辑:在重读你的问题后,我根据我帖子中的第二个链接尝试了一下: public static T FindC
asp.net面板
,它有时位于另一个父面板中,有时甚至位于2或3个父面板中,我需要向上遍历这些父面板,最终找到我正在寻找的UserControl
在C#/asp.net中有没有一种简单的方法可以做到这一点 编辑:在重读你的问题后,我根据我帖子中的第二个链接尝试了一下:
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;
}
您可以这样使用:
var control = FindControlRecursive(MyPanel.Page,"controlId");
您还可以将其与以下内容结合使用:创建更好的版本。您应该能够使用的属性:
这不是走错路了吗?OP要求向上搜索,但如果我没有弄错的话,这是向下搜索。谢谢,基于你的代码思想,我已经创建了一些完全符合我需要的东西。
var control = FindControlRecursive(MyPanel.Page,"controlId");
private Control FindParent(Control child, string id)
{
if (child.ID == id)
return child;
if (child.Parent != null)
return FindParent(child.Parent, id);
return null;
}