Mit C# FindControl finden Sie eine Benutzer-Steuerelement in der master-Seite
Also alles was ich will zu tun ist, suchen Sie einfach ein Benutzer-Steuerelement geladen werden, basierend auf einem drop-down-Auswahl. Ich habe das Benutzer-Steuerelement Hinzugefügt, aber jetzt bin ich versucht zu finden, die Kontrolle so kann ich Zugriff auf ein paar Eigenschaften von ihm Weg und ich kann nicht finden, die Steuern, die für das Leben von mir. Ich bin tatsächlich tun, all dies in der master-Seite und da ist kein code in der Standardeinstellung.aspx-Seite selbst. Jede Hilfe würde geschätzt werden.
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;
}
Hier verstehe ich nicht, was es mir zu sagen. für "par" bekomme ich "ctl09" und ich habe keine Ahnung, wie soll ich finden, die dieses Steuerelement.
temp1.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{
string ppp = this.ID;
string par = this.Parent.ID;
}
InformationsquelleAutor MisterIsaak | 2010-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sei denn, Sie fordern
goToSelectedPage
in Ihre SeiteInit
handler, oder aber es ist ein Teil der Seite setup-routine, die ausgeführt wird, in exakt der gleichen Weise auf jeder Seite laden, dann wird Ihre dynamisch erstellten Steuerelementct
existiert nicht auf dem postback.Denken Sie daran, dass jedes mal, wenn Sie buchen, Sie werden immer eine neue Instanz einer
Page
, mit neuen Instanzen alle Steuerelemente. Wenn Sie nicht herstellen und das hinzufügen von Ihrem usercontrol die gleiche Weise jedes mal, es wird einfach nicht da sein.Keine Sorge - der Lebenszyklus der Seite erhalten Sie in Schwierigkeiten, für Monate und Monate, um zu kommen 😉
InformationsquelleAutor womp