1

Tout ce que je veux faire est simplement de trouver un contrôle utilisateur que je charge en fonction d'une sélection déroulante. J'ai le contrôle d'utilisateur ajouté mais maintenant j'essaye de trouver le contrôle ainsi je peux accéder à quelques propriétés hors de lui et je ne peux pas trouver le contrôle pour la vie de moi. Je suis en train de faire tout cela dans la page maître et il n'y a pas de code dans la page default.aspx elle-même. Toute aide serait appréciée.Utilisation de C# FindControl pour trouver un contrôle utilisateur dans la page maître

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> 
        &nbsp; 
        <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; 
     } 

Ici je ne comprends pas ce qu'il me dit. pour "par" je reçois "ctl09" et je n'ai aucune idée de comment je suis supposé trouver ce contrôle. temp1.ascx.cs

protected void Page_Load(object sender, EventArgs e) 
     { 
string ppp = this.ID; 
       string par = this.Parent.ID; 
} 

Répondre

1

À moins que vous appelez goToSelectedPage dans le gestionnaire Init de votre page, ou bien elle fait partie d'une routine de mise en page qui est exécutée de la même manière exacte sur chaque chargement de page, votre dynamique créée contrôle ct n'existe pas sur la publication. N'oubliez pas qu'à chaque fois que vous postez, vous obtenez une nouvelle instance d'un Page, avec de toutes nouvelles instances de tous les contrôles sur celui-ci. Si vous ne recréez pas et si vous ajoutez votre contrôle utilisateur de la même manière à chaque fois, il ne sera tout simplement pas là.

+0

Hmm. Merci! C'est exactement ce que j'avais besoin de savoir. Je suis nouveau à ASP et le cycle de vie de la page me cause encore des problèmes de temps en temps. – MisterIsaak

+0

Ne vous inquiétez pas - le cycle de vie de la page vous posera des problèmes pendant des mois et des mois à venir;) – womp

Questions connexes