• 0

[ASP.NET C#] Iterate through dynamic controls


Question

I have an ASP.NET C# web app that has a table dymanically created at run-time. In the table there are a number of dropdowns and textboxes created, depending on the number of Rows in the database.

My question is, how do I access these controls once the page is loaded? Here's some code I used to create them:

// makes the comments textbox and labels as txt[AccountID]
    	TextBox txt = new TextBox();
    	txt.TextMode = TextBoxMode.MultiLine;
    	txt.ID = "txt" + Convert.ToString(thisReader3.GetValue(6));
    	tcell.BorderColor = Color.FromArgb(215, 215, 255); // light blue
    	tcell.BorderWidth = 1;
    	tcell.VerticalAlign = VerticalAlign.Top;
    	tcell.HorizontalAlign = HorizontalAlign.Right;
    	tcell.Width = 152;
    	tcell.Controls.Add(txt); 
    	trow.Cells.Add(tcell);

    	tblDynamic.Rows.Add(trow);
    	thisReader3.Read();

8 answers to this question

Recommended Posts

  • 0

Ok I found this code but it's not working... it's not finding my textbox controls on the page. Anyone know why?

void IterateThroughChildren(Control parent)
  {
  	foreach (Control c in parent.Controls)
  	{
    if (c.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox"))
    {
    	string com = ((TextBox) c).ID.ToString();
    }
        
    if (c.Controls.Count > 0)
    {          
    	IterateThroughChildren(c);          
    }
  	}
  }

  • 0

GetType() returns the top level class only... so it's good to check for the control type.

but... if you're checking this list on PostBack, then you should know that probably your controls aren't there. you have to either REbuild them or add them to the page state, so they are persistent. runtime-created controls aren't persistent, by default.

  • 0
  Menge said:
GetType() returns the top level class only... so it's good to check for the control type.

but... if you're checking this list on PostBack, then you should know that probably your controls aren't there. you have to either REbuild them or add them to the page state, so they are persistent. runtime-created controls aren't persistent, by default.

586124298[/snapback]

Thanks! How do I add them to the page state dynamically?

  • 0
  Lazereth said:
you are better of using "is typeof(inserttypehere)" rather than using the string signature of the relevant control. You'll also note that its perhaps better to check the interface rather than the control inself.

586124289[/snapback]

Can you give me an example of how the code would look instead? Thanks!

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • The best thing would be to just allow more options to let users pick the layout they like, it doesn't matter at this point really and it's not that hard to do as evidenced but all the 3rd party menus/tools that let you change it in lots of different ways. If you give the users more options they'll be happy, take them away and you have a problem.
    • They could've done that the very next day or from the start but when Win11 came out, the MSN team was still rooted in the OS division and pushing for it's hooks into everything. That's why we have recommended and all the MSN feed stuff in the widget panel which you also couldn't turn off at the start. Now that they've been pushed out, last I checked, all this MSN/web feed junk is finally getting the option to be turned off. tl/dr, it's not about coding ability, it's just dumb business decisions.
    • The headline doesn't fit the article. Sure the headline is more enticing probably, but come on, man. Keep it real, if you can help it.
    • The console sales don't mean much like they used to. Sony tells you this themselves but you seem to miss it. They care more about MAUs and how many people they can milk each month than x number of consoles sold, often to the more casual COD, Madden or FiFA gamers who play little else. Sony can't seem to port their games to the PC fast enough because they're not getting enough out of that 75 million console sales it seems. The traditional home console market has stagnated already, everyone knows it.
    • That is fair, I meant the comment somewhat whimsically and as such was a bit careless with the facts. Had I said either 2 or 4 that would be more defensible. SpaceX's Starship crashed 2 times during hop tests and 2 additional hop-test failures that while not exactly a "crash," still resulted in the total destruction of the test vehicle. Even in that example, it would still be fair for you to point out that Starship is a significantly more complex test vehicle and that SpaceX never crashed a simple rocket hop-test like this one. I already admitted that I could have been clearer, but I also don't think it unreasonable to use the word "it" when referring to the subject of the article I am commenting on. I feel like it is an outlying read of my words to assume "it" meant SpaceX's total success. Like I said, I accept responsibility for the ambiguity.
  • Recent Achievements

    • Week One Done
      slackerzz earned a badge
      Week One Done
    • Week One Done
      vivetool earned a badge
      Week One Done
    • Reacting Well
      pnajbar earned a badge
      Reacting Well
    • Week One Done
      TBithoney earned a badge
      Week One Done
    • First Post
      xuxlix earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      681
    2. 2
      ATLien_0
      285
    3. 3
      Michael Scrip
      225
    4. 4
      +FloatingFatMan
      197
    5. 5
      Steven P.
      136
  • Tell a friend

    Love Neowin? Tell a friend!