2010-09-15 11 views
11

Je dois trouver un Control dans une page ASPX liée à une page maître.Rechercher un contrôle sur une page avec un gabarit

La page principale contient:

<asp:ContentPlaceHolder ID="MainContent" runat="server"/>    

La page de contenu contient:

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server"> 
</asp:Content> 

J'ai ajouté un Table avec IDformtable comme un enfant de Content2.

J'ai essayé d'utiliser le code suivant pour accéder au Table, mais le code retourne null:

protected void Ok_Click(object sender, EventArgs e) 
{ 
    Table tblForm = this.FindControl("MainContent").FindControl("formtable") as Table;     
} 

Comment puis-je accéder au Table?

Répondre

25

Essayez cette

Table tblForm = this.Master.FindControl("MainContent").FindControl("formtable") as Table; 

Commander ce Control ID Naming in Content Pages pour plus de détails

0

Dans quel contexte intervenez-vous lorsque vous essayez de le faire? Êtes-vous dans le codebehind de la page individuelle?

Si vous êtes, il devrait être Content1.FindControl("formtable") as Table et ce serait le cas.

0

Utilisation des complications propres FindControl() parfois. Il est plus facile de définir une propriété publique pour ce contrôle dans la page maître, puis d'accéder au contrôle via la propriété.

vous devez ajouter cette ligne à la page des enfants:

<%@ MasterType VirtualPath="~/MasterPage.master" %>