А как насчет Control.FindControl
?
Предположим, ваш идентификатор таблицы tableExample
:
var tr = tableExample.FindControl("tr5");
Но помните, что это не рекурсивно. Итак, если вы хотите получить lblParameter5
, вы можете сначала найти каждого родителя до этого элемента:
var tr = tableExample.FindControl("tr5") as HtmlTableRow;
var td = tr.FindControl("td5") as HtmlTableCell;
var lbl = td.FindControl("lblParemeter5") as Label;
Или вы можете создать рекурсивную функцию, которая сделает это за вас. Вот пример использования методов расширения для создания этой рекурсивной функции:
public static class MyExtensions
{
public static Control FindById(this Page p, string id)
{
return FindControlRecursive(p, id);
}
private static Control FindByIdRecursive(Control root, string id)
{
if (root.ID == id)
return root;
foreach (Control c in root.Controls)
{
Control c2 = FindByIdRecursive(c, id);
if (c2 != null)
return t;
}
return null;
}
}
Итак, ваш звонок просто будет:
var lbl = FindById("lblParameter5") as Label;