如何从.aspx页上的 .ascx 获取控件引用
本文关键字:ascx 获取 控件 引用 aspx | 更新日期: 2023-09-27 18:36:58
我有一个这样的向导设置:
<asp:Wizard ID="Wizard1" runat="server" DisplaySideBar="false" onnextbuttonclick="OnNextButtonClick">
<WizardSteps>
<asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1">
<div class="content">
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</div>
</asp:WizardStep>
<asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2">
<div class="content">
<asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
</div>
</asp:WizardStep> ...more
然后在该页面的预呈现中,我添加了如下所示的控件:
protected void Wizard1_PreRender(object sender, EventArgs e)
{
PlaceHolder1.Controls.Add(LoadControl("Control1.ascx"));
PlaceHolder2.Controls.Add(LoadControl("Control2.ascx"));
PlaceHolder3.Controls.Add(LoadControl("Control3.ascx"));
...more controls added
}
在.ascx控件上,我有一个ajaxToolkit:TabContainer,我想像这样访问它:
<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" ActiveTabIndex="0">
<ajaxToolkit:TabPanel ID="TabPanel1" HeaderText="PRV 1" runat="server">
因此,我想做的是阻止向导转到下一步,并将ajaxtoolkit:Tabcontainer移动到下一个选项卡。 我正在像这样访问下一个按钮:
protected void OnNextButtonClick(object sender, WizardNavigationEventArgs e)
{
if(Wizard1.ActiveStepIndex == 2)
{
e.Cancel = true;
//get ajaxToolKit:tabcontrol here
}
}
关于如何在OnNextButtonClick函数中访问TabControl的任何想法?这是一个 asp.net 的 Web 应用程序。
如果您
不知道页面的深度,则可以使用 Page.GetControl("TabContainer1")或使用递归方法(对 .ascx 很有用)。
public static Control FindControlRecursive(Control container, string name)
{
if ((container.ID != null) && (container.ID.Equals(name)))
return container;
foreach (Control ctrl in container.Controls)
{
Control foundCtrl = FindControlRecursive(ctrl, name);
if (foundCtrl != null)
return foundCtrl;
}
return null;
}
使用它 FindControlRecursive(Page, "TabContainer1")