Control Tree Recursion Using ASP.NET 2.0
page 4 of 5
by Tom Blanchard
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 33955/ 71

Understanding the Code

In the code behind, we need to add the lbPanelShow_Click which will handle the OnClick of all of the "LinkButtons" that we added, because we told it to earlier.

Listing 5

protected void lbPanelShow_Click(object sender, EventArgs e)
        {
            // your sender would be the link button that you clicked.            
            LinkButton oLbl = (LinkButton)sender;
            // now get the form
            Control oFrm = Page.Form;
            //loop through the Forms control collection
            foreach (Control oCtl in oFrm.Controls)
            {
            // you will find the place holder controls here       
            if (oCtl is ContentPlaceHolder)
                {
                  // loop through the placeholder's control collection
                  foreach(Control oCtl in ctl.Controls) {
                     // we only want to access our panel controls 
                     if (ctl1 is Panel)
                      {
                          switch (oLbl.Text) { 
                              case "lb1":
                                  if (ctl1.ID == "pnl1")
                                  {
                                      ctl1.Visible = true;
                                  }
                                  else
                                  {
                                      ctl1.Visible = false;
                                  }
                                  break;
                              case "lb2":
                                  if (ctl1.ID == "pnl2")
                                  {
                                      ctl1.Visible = true;
                                  }
                                  else
                                  {
                                      ctl1.Visible = false;
                                  }
                                  break;
                              case "lb3":
                                  if (ctl1.ID == "pnl3")
                                  {
                                      ctl1.Visible = true;
                                  }
                                  else
                                  {
                                      ctl1.Visible = false;
                                  }
                                  break;
                              case "lb4":
                                  if (ctl1.ID == "pnl4")
                                  {
                                      ctl1.Visible = true;
                                  }
                                  else
                                  {
                                      ctl1.Visible = false;
                                  }
                                  break;
                              default:
                                  break;
                          }                     
                      }
                  }
                }
            } //end foreach loop
        }// end procedure lbPanelShow_Click

Now that you have done that, try it out. You will see it performs rather nicely.


View Entire Article

User Comments

Title: very useful   
Name: shubha
Date: 2008-09-12 7:09:52 AM
Comment:
this article was very useful for me. Actually i was struggling to find, how to find out the type of the control in a panel. Its a very simple solution to use 'is' operator. But i struggled a lot before finding this article..

thank u Tom Blanchard
Title: Very useful.   
Name: Dipal Bhavsar
Date: 2008-06-25 1:24:16 AM
Comment:
Hi, this is very useful to me...

Dipal Bhavsar
Title: check the link from the article in the first paragraph   
Name: TB
Date: 2008-02-19 1:22:29 PM
Comment:
It is just basically is an updated way to go through something similar in the 2.0 framework.
It is more of looping than recursing.
Title: Misleading   
Name: none
Date: 2008-02-19 12:48:02 PM
Comment:
This is nice and all, but there isn't anything recursive about it.
Title: Just what I was looking for!   
Name: Will Asrari
Date: 2007-06-14 11:48:50 PM
Comment:
Sweet. Thanks!
Title: Good Job   
Name: Tom Blanchard
Date: 2006-10-06 2:26:27 PM
Comment:
Excellent Job Rizwan! I didn't even go into HTMLControls, but glad it was easy for you to adapt.
Title: Rizwan Gulamhussein   
Name: Control Tree Recursion Using ASP.NET 2.0
Date: 2006-10-06 1:48:45 AM
Comment:
Sorry, by the way, I forgot to mention that your code as well as my own code snippet works.

Thanks.
Title: Control Tree Recursion Using ASP.NET 2.0   
Name: Rizwan Gulamhussein
Date: 2006-10-06 1:44:11 AM
Comment:
Great article Tom.

In my code, I have a single gridview that contains HTML radio buttons and HTML checkboxes. Although intellisense displays the name of the gridview, the debugger complained.

What I did was this:

GridView targetGrid = (GridView)FindControl("TargetSegmentGridView");

foreach (GridViewRow row in targetGrid.Rows)
{
etc.

Happy coding! :)
Title: Error in text   
Name: Tom Blanchard
Date: 2006-08-07 11:43:56 AM
Comment:
foreach(Control oCtl in ctl.Controls) {
Should read foreach(Control ctl1 in oCtl.Controls) {

Some of this was copied from actual code that I have used and some of the names were changed to protect the innocent, however, I apparently missed something.

My apologies.
Title: error   
Name: interesting
Date: 2006-08-07 11:25:12 AM
Comment:
when I run this, i get the following error

: CS0103: The name 'ctl' does not exist in the current context

Product Spotlight
Product Spotlight 





Community Advice: ASP | SQL | XML | Regular Expressions | Windows


©Copyright 1998-2019 ASPAlliance.com  |  Page Processed at 2019-09-20 8:53:28 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search