所以我想做的就是找到一个基于下拉选择加载的用户控件。我添加了用户控件但现在我正在尝试找到控件,所以我可以访问它的几个属性,我无法找到我的生活控件。我实际上是在母版页中完成所有这些操作,而default.aspx页面本身没有代码。任何帮助将不胜感激。
MasterPage.aspx
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager runat="server">
</asp:ScriptManager>
</div>
<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"
OnLoad="UpdatePanel2_Load">
<ContentTemplate>
<div class="toolbar">
<div class="section">
<asp:DropDownList ID="ddlDesiredPage" runat="server" AutoPostBack="True" EnableViewState="True"
OnSelectedIndexChanged="goToSelectedPage">
</asp:DropDownList>
<asp:DropDownList ID="ddlDesiredPageSP" runat="server" AutoPostBack="True" EnableViewState="True" OnSelectedIndexChanged="goToSelectedPage">
</asp:DropDownList>
<br />
<span class="toolbarText">Select a Page to Edit</span>
</div>
<div class="options">
<div class="toolbarButton">
<asp:LinkButton ID="lnkSave" CssClass="modal" runat="server" OnClick="lnkSave_Click"><span class="icon" id="saveIcon" title="Save"></span>Save</asp:LinkButton>
</div>
</div>
</div>
</ContentTemplate>
<Triggers>
</Triggers>
</asp:UpdatePanel>
<div id="contentContainer">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load" UpdateMode="Conditional"
ChildrenAsTriggers="False">
<ContentTemplate>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lnkHome" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="rdoTemplate" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
</div>
MasterPage.cs
protected void goToSelectedPage(object sender, System.EventArgs e)
{
temp1 ct = this.Page.Master.LoadControl("temp1.ascx") as temp1;
ct.ID = "TestMe";
this.UpdatePanel1.ContentTemplateContainer.Controls.Add(ct);
}
//This is where I CANNOT SEEM TO FIND THE CONTROL ////////////////////////////////////////
protected void lnkSave_Click(object sender, System.EventArgs e)
{
UpdatePanel teest = this.FindControl("UpdatePanel1") as UpdatePanel;
Control test2 = teest.ContentTemplateContainer.FindControl("ctl09") as Control;
temp1 test3 = test2.FindControl("TestMe") as temp1;
string maybe = test3.Col1TopTitle;
}
在这里,我不明白它告诉我的是什么。对于“标准杆”,我得到“ctl09”,我不知道我应该如何找到这个控件。 temp1.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
string ppp = this.ID;
string par = this.Parent.ID;
}
答案 0 :(得分:1)
除非您在页面的goToSelectedPage
处理程序中调用Init
,否则它是页面设置例程的一部分,在每次加载页面时执行的方式完全相同,那么您动态创建的控件{回发中不存在{1}}。
请记住,每次发帖时,您都会获得ct
的新实例,其中包含所有控件的全新实例。如果你不是每次都以相同的方式重新创建和添加你的用户控件,它就不会在那里。