То, что вы получили, на самом деле не относится к SharePoint, это c # asp.net.
В любом случае, вы можете назвать это так
var page = HttpContext.Current.Handler as Page;
var control = page; // or put the element you know exist that omit (is a parent) of the element you want to find
var myElement = FindControlRecursive(control, "yourelement");
Скорее всего, вам понадобится разыгратьreturn также
var myElement = (TextBox)FindControlRecursive(control, "yourelement");
// or
var myElement = FindControlRecursive(control, "yourelement") as TextBox;
Однако есть более эффективные способы написания такого метода, вот один простой пример
public static Control FindControlRecursive(string id)
{
var page = HttpContext.Current.Handler as Page;
return FindControlRecursive(page, id);
}
public static Control FindControlRecursive(Control root, string id)
{
return root.ID == id ? root : (from Control c in root.Controls select FindControlRecursive(c, id)).FirstOrDefault(t => t != null);
}
Назовите его так же, как я предлагал ранее.
Если вы обрабатываете большие страницы, методы, описанные выше, могут быть немного медленными, вам следует стремиться к методу, использующему дженерики.Они намного быстрее традиционных методов.
Попробуйте это
public static T FindControlRecursive<T>(Control control, string controlID) where T : Control
{
// Find the control.
if (control != null)
{
Control foundControl = control.FindControl(controlID);
if (foundControl != null)
{
// Return the Control
return foundControl as T;
}
// Continue the search
foreach (Control c in control.Controls)
{
foundControl = FindControlRecursive<T>(c, controlID);
if (foundControl != null)
{
// Return the Control
return foundControl as T;
}
}
}
return null;
}
Вы называете это так
var mytextBox = FindControlRecursive<TextBox>(Page, "mytextBox");