//页面 a.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<uc1:Nav ID="Nav1" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
<br />
<uc2:TemplateRegAccount ID="TemplateRegAccount1" runat="server" />
<br /><br />
<asp:PlaceHolder ID="PlaceHolderUserInfoControl" runat="server"></asp:PlaceHolder>
<br /><br /><br />
<div><center>
<asp:Label ID="Error" runat="server" Text=""></asp:Label></center></div>
<div>
<center>
<asp:Button ID="Button1" runat="server" Text=" 提 交 "
onclick="Button1_Click" />
</center>
</div>
</asp:Content>
//是动态加载的控件b.ascx 或 c.ascx
b.ascx
里面可能有多个控件
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>c.ascx
里面可能有多个控件
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
//问题。我如何在 a.aspx 里 查找这些控件,的数量,及值,ID 不确定。
有封装的方法访问吗?
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<uc1:Nav ID="Nav1" runat="server" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
<br />
<uc2:TemplateRegAccount ID="TemplateRegAccount1" runat="server" />
<br /><br />
<asp:PlaceHolder ID="PlaceHolderUserInfoControl" runat="server"></asp:PlaceHolder>
<br /><br /><br />
<div><center>
<asp:Label ID="Error" runat="server" Text=""></asp:Label></center></div>
<div>
<center>
<asp:Button ID="Button1" runat="server" Text=" 提 交 "
onclick="Button1_Click" />
</center>
</div>
</asp:Content>
//是动态加载的控件b.ascx 或 c.ascx
b.ascx
里面可能有多个控件
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>c.ascx
里面可能有多个控件
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
//问题。我如何在 a.aspx 里 查找这些控件,的数量,及值,ID 不确定。
有封装的方法访问吗?
/// <summary>
/// 获取某一控件所有的子控件
/// </summary>
/// <param name="contrl"></param>
/// <returns></returns>
public static List<T> GetCtrlAllSubCtrls<T>(Control contrl) where T : Control
{
List<T> results = new List<T>(); foreach (Control control in contrl.Controls)
{
if (control.Controls.Count > 0)
{
results.AddRange(GetCtrlAllSubCtrls<T>(control));
}
else
{
T t = control as T;
if(t!=null) results.Add(t);
}
} return results;
}这是个泛型方法,会递归所有的控件的,具体在页面中
GetCtrlAllSubCtrls<TextBox>(this);
GetCtrlAllSubCtrls<TextBox>(aAscxCtrl);