n ASP.NET如何找到嵌套在DetailsView中的TextBox的控件ID,然后嵌套在AJAX UpdatePanel控件中?
heirachy是:UpdatePanel1 - > dvContentDetail(DetailsView控件) - > TextBox2中
我尝试了类似下面的内容,但只是说未找到该对象:
UpdatePanel1.FindControl("dvContentDetail").FindControl("TextBox2").ClientID
答案 0 :(得分:1)
没有必要从updatepanel找到控件,因为这些控件直接可用,所以你的代码就像这样......
TextBox TextBox2 = (TextBox)dvContentDetail.FindControl("TextBox2");
答案 1 :(得分:0)
您可以尝试类似下面的代码。但是如果你知道Hierarchy 不会改变它,那么最好做一系列的“FindControl”调用。要发现正确的层次结构,请调试应用程序并搜索“控制层次结构”。
public static T FindControlRecursiveInternal<T>(Control startingControl, string controlToFindID) where T : Control
{
if (startingControl == null || String.IsNullOrEmpty(controlToFindID))
return (T)null;
Control foundControl = startingControl.FindControl(controlToFindID);
if (foundControl == null)
{
foreach (Control innerControl in startingControl.Controls)
{
foundControl = FindControlRecursiveInternal<T>(innerControl, controlToFindID);
if (foundControl != null)
break;
}
}
return (T)foundControl;
}