Solved

FindControl() With MasterPages

Posted on 2008-10-30
7
612 Views
Last Modified: 2013-11-08
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
Comment
Question by:grogo21
  • 4
  • 3
7 Comments
 
LVL 8

Expert Comment

by:dampsey
ID: 22842123
Assuming Content2 is the name of the master page contentplaceholder name,

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

0
 

Author Comment

by:grogo21
ID: 22842299
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
 
LVL 8

Accepted Solution

by:
dampsey earned 500 total points
ID: 22842363
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
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 

Author Comment

by:grogo21
ID: 22842523
Still get Object reference not set to an instance of an object.

Thanks
0
 
LVL 8

Expert Comment

by:dampsey
ID: 22847962
In which event of the page you are using the FindControl function?
0
 

Author Comment

by:grogo21
ID: 22860202
PageLoad event
0
 

Author Comment

by:grogo21
ID: 22860332
This appears to work:
                TargetImage = DirectCast(DirectCast(Master.FindControl("ContentPlaceHolder1"), ContentPlaceHolder).FindControl("Image" & i.ToString), HyperLink)


Thanks!
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now