• 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

    • So, they catched 2-3 of the bad guys. The other 30.000 went undetected.
    • Borderlands 2 is free on Steam to grab right now by Pulasthi Ariyasinghe The fourth installment in the main Borderlands series is only a few months away from launch, and now there's a good opportunity for new players to see what all the excitement is about. Developer Gearbox today launched a giveaway for Borderlands 2, offering the base game for all PC gamers to claim for free and play through its campaign. The promotion is running on Steam, making it an easy grab for most. The 2012-released action RPG takes players to the lawless planet of Pandora for a humorous adventure concerning a rebel group going up against the fan-favorite tyrannical boss, Handsome Jack. Taking the role of Vault Hunters searching for a grand treasure on the planet, the characters Axton (Commando), Maya (Siren), Zer0 (Assassin), and Salvador (Gunzerker) are available to play in the base game. Each Vault Hunter has their own skill trees and ultimate abilities, letting players mix and match many of their play styles when progressing through the campaign. However, perhaps the most important aspect of the Borderlands series is the guns. The looter shooter elements of the title mean that there are countless weapon and gear variations, each coming with unique stats and effects that vary depending on the rarity. Borderlands 2 supports up to 4-player cooperative play with drop-in, drop-out multiplayer. Your character's loadout and progression will follow you for any games you join as well. The Borderlands 2 giveaway on Steam is live right now. It's slated to come to an end on June 8 at 10am PT. For those looking to expand on the Borderlands universe after grabbing the freebie, all the games and their massive number of DLCs are discounted as part of a franchise sale on Steam right now too. Don't forget that PC players can also pick up Bethesda's Deathloop right now for free as well, with that promotion currently running on the Epic Games Store.
    • They need to pay me more than that!
    • Yep, same. One less source of brainrot to boot.
  • Recent Achievements

    • First Post
      Uranus_enjoyer earned a badge
      First Post
    • Week One Done
      Uranus_enjoyer earned a badge
      Week One Done
    • Week One Done
      jfam earned a badge
      Week One Done
    • First Post
      survivor303 earned a badge
      First Post
    • Week One Done
      CHUNWEI earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      428
    2. 2
      +FloatingFatMan
      199
    3. 3
      snowy owl
      192
    4. 4
      ATLien_0
      187
    5. 5
      Xenon
      142
  • Tell a friend

    Love Neowin? Tell a friend!