Si estás tratando de usar FindControl para encontrar un control que está en una página que está basada en una MasterPage, utiliza la siguiente notación para encontrarlo:

Page.Master.FindControl("NombreDeLaForma").FindControl("NombreDelContentPlaceHolder").FindControl("ControlQueBuscas")

Ejemplo, supón que tu MasterPage es:

  1. <%@ Master Language="VB" CodeFile="Ppal.master.vb" Inherits="Ppal" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml" >
  6. <head runat="server">
  7.     <title>Titulo</title>
  8. </head>
  9. <body>
  10.     <form id="form1" runat="server">
  11.         <asp:contentplaceholder id="Cuerpo" runat="server">
  12.         </asp:contentplaceholder>
  13.     </form>
  14. </body>
  15. </html>

También supón que tienes una página basada en ese MasterPage, cuyo código es:

  1. <%@ Page Language="VB" MasterPageFile="~/Ppal.master" AutoEventWireup="false" CodeFile="Ejemplo.aspx.vb" Inherits="Ejemplo" title="Untitled Page" %>
  2. <asp:Content ID="Content1" ContentPlaceHolderID="Cuerpo" Runat="Server">
  3.     <asp:TextBox ID="CajaTexto" runat="server"></asp:TextBox>
  4. </asp:Content>

El código que usarías para encontrar CajaTexto y modificar alguna de sus propiedades sería este:

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.         Dim Caja As TextBox
  3.         Caja = Page.Master.FindControl("form1").FindControl("Cuerpo").FindControl("CajaTexto")
  4.         Caja.Text = "Hola"
  5.     End Sub

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


uno + = 9