Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 676
  • Last Modified:

FindControl() With MasterPages

Hello, Im tring to find a control inside a master page contentplaceholder with the following:

                Dim TargetImage As HyperLink
                TargetImage = FindControl("Content2").FindControl("Image" & i)

I get object reference not set to an instance of an object.  I also tried:
                TargetImage = Me.Master.FindControl("Content2").FindControl("Image" & i)

The controls are not in the master page but in a page that uses the master page.  It did work before adding utalizing master pages also.  How can i fix this?

Thanks,

Greg
0
grogo21
Asked:
grogo21
  • 4
  • 3
1 Solution
 
dampseyCommented:
Assuming Content2 is the name of the master page contentplaceholder name,

Can you please try the following:
TargetImage = Me.Master.FindControl("Image" & i)

0
 
grogo21Author Commented:
That did not work. I have attached the source code for my page.

Thanks!
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        <div class="HeaderContentDiv">
            <asp:Label ID="WelcomeLabel" CssClass="WelcomeLabel" runat="server" Text=""></asp:Label><br /></div>
            
        <div class="GalleryContentDiv">
            <table>
                <tr valign="middle">
                    <td><asp:HyperLink ID="Image1" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image2" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image3" runat="server" visible="false" CssClass="ImageTR"/></td>
                </tr>
                <tr class="ImageTR" valign="middle">
                    <td><asp:HyperLink ID="Image4" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image5" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image6" runat="server" visible="false" CssClass="ImageTR"/></td>
                </tr>
                <tr valign="middle" align="center">
                    <td colspan="3" align="center" style="padding:5px; text-align:center;"><asp:HyperLink ID="Banner1" runat="server" visible="false" Target="_blank" CssClass="BannerImg"/></td>
                </tr>
                <tr class="ImageTR" valign="middle">
                    <td><asp:HyperLink ID="Image7" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image8" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image9" runat="server" visible="false" CssClass="ImageTR"/></td>
                </tr>
                <tr class="ImageTR" valign="middle">
                    <td><asp:HyperLink ID="Image10" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image11" runat="server" visible="false" CssClass="ImageTR"/></td>
                    <td><asp:HyperLink ID="Image12" runat="server" visible="false" CssClass="ImageTR"/></td>
                </tr>
....
            </table>
        </div>
</asp:Content>

Open in new window

0
 
dampseyCommented:
place the below code anywhere in your code.

then use the following

FindControlRecursive(this.Page, "Image" + i)

I know the following is written in c# but you may change it to vb easily
        public static Control FindControlRecursive(Control Root, string Id)
        {
            if (Root.ID == Id)
                return Root;
 
            foreach (Control Ctl in Root.Controls)
            {
                Control FoundCtl = FindControlRecursive(Ctl, Id);
                if (FoundCtl != null)
                    return FoundCtl;
            }
 
            return null;
        }

Open in new window

0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
grogo21Author Commented:
Still get Object reference not set to an instance of an object.

Thanks
0
 
dampseyCommented:
In which event of the page you are using the FindControl function?
0
 
grogo21Author Commented:
PageLoad event
0
 
grogo21Author Commented:
This appears to work:
                TargetImage = DirectCast(DirectCast(Master.FindControl("ContentPlaceHolder1"), ContentPlaceHolder).FindControl("Image" & i.ToString), HyperLink)


Thanks!
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now