What happens when the FindControl() doesn’t work?

While working in SharepPoint I needed, from an UserControl in my WebPart, find a control in the page. Of course, I tried, different level at which to apply the FindControl(). The first thing I tried was this.Parent.Page.FindControl(“controlID”). That didn’t work. Then I tried different permutations. Finally I gave up with the FindControl and decided that I would do it the old fashion way. I’ll walk the tree. Here is some sample code how to do that.

 

Control PViewer = null;               

                foreach (Control Ctrl in this.Parent.Page.Controls)

                {

                    PViewer = FindMyControl(Ctrl,”MyControlID”);

                    if (PViewer != null)

                    {

                        break;

                    }

                }

 

private Control FindMyControl (Control ctrl, string controlID)

        {

            Control Ret = null;

            foreach (Control Ctrl in ctrl.Controls)

            {

               

                if (Ctrl.ID != null && Ctrl.ID.ToLower() == controlID.ToLower())               

                {                   

                    Ret = Ctrl;

                    break;

                }

                else

                {

                    Ret = FindMyControl (Ctrl,controlID);

                    if (Ret != null)

                    {

                        break;

                    }

                }

            }

            return Ret;

        }

 

Of course if you examine the code you will notice that I’m walking the tree recursively calling the FindMyControl method over and over again until I find the control I’m looking for.

Don’t forget the test for null in the if (Ctrl.ID != null && Ctrl.ID.ToLower() == controlID.ToLower()) statement. Of course make sure the test for null comes first. J

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5