[asp.net/c#] controls vinden/zoeken in webform

Pagina: 1
Acties:

  • shades
  • Registratie: September 2001
  • Laatst online: 06-03 10:48
Ik heb een aantal panel controls (<asp:Panel>) op een webform geplaats en afhankelijk van de opgegeven querystring/postback actie moeten er een aantal aan of uit. Omdat het een fijne lijst is heb ik een foreach gemaakt om al deze panels te vinden maar volgens de code is er geen panel te vinden - ik ben bang dat ik iets fout doe:

C#:
1
2
3
4
5
6
7
8
foreach (Control ctl in Page.Controls)
{
    Response.Write("lus:" + ctl.ID + "<br/>");
    if (ctl.GetType() == typeof(Panel) )
    {
        Response.Write("Gevonden:" + ctl.ID + "<br/>");
    }
}


Het resultaat hiervan is:
code:
1
2
3
lus:
lus:Form1
lus:


Terwijl ik iets had verwacht als (de lus dingen weggelaten):
code:
1
2
3
4
5
Gevonden:Panel1
Gevonden:Panel2
Gevonden:Panel3
Gevonden:Panel4
Gevonden:Panel5


Wat ik ook nog heb geprobeerd is Page.Controls[0].Controls ipv Page.Controls om binnen de form1 control te zoeken maar dat werkt ook niet. Iemand een idee wat ik niet goed doe ?

https://k1600gt.nl


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:38
Als ik
code:
1
2
3
lus:
lus:Form1
lus:

Zie, zou ik zeggen dat Form1 Page.Controls[1] is.

Verder zou je eens naar de Control.FindControl methode kunnen kijken

[ Voor 33% gewijzigd door sig69 op 02-05-2005 09:44 ]

Roomba E5 te koop


  • whoami
  • Registratie: December 2000
  • Nu online
Je moet ook nog eens in de Controls gaan van iedere Control denk ik; (als de huidige control een container-control is).

-> dus een recursieve functie maken die uw panels zoekt.

[ Voor 21% gewijzigd door whoami op 02-05-2005 09:44 ]

https://fgheysels.github.io/


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 22-03 21:36
Je kunt controls gewoon vinden met FindControl(). Dan hoef je niet door de control collections te struinen.

Het probleem uit je voorbeeld is dat de panels niet in de controls property van de Page zitten maar in die van het form. FindControl() maakt dat niet zo veel uit (zo lang alles maar dezelfde naming context heeft).

Cuyahoga .NET website framework


  • shades
  • Registratie: September 2001
  • Laatst online: 06-03 10:48
whoami schreef op maandag 02 mei 2005 @ 09:43:
Je moet ook nog eens in de Controls gaan van iedere Control denk ik; (als de huidige control een container-control is).

-> dus een recursieve functie maken die uw panels zoekt.
Dat zou wel het handigste zijn.. ook voor universeel gebruik...
tijn schreef op maandag 02 mei 2005 @ 09:47:
Je kunt controls gewoon vinden met FindControl(). Dan hoef je niet door de control collections te struinen.

Het probleem uit je voorbeeld is dat de panels niet in de controls property van de Page zitten maar in die van het form. FindControl() maakt dat niet zo veel uit (zo lang alles maar dezelfde naming context heeft).
Jawel maar de rest moet wel uit en ik vind het duf om een hele lijst te maken met panelx.visible=true/false
sig69 schreef op maandag 02 mei 2005 @ 09:42:
Als ik
code:
1
2
3
lus:
lus:Form1
lus:

Zie, zou ik zeggen dat Form1 Page.Controls[1] is.

Verder zou je eens naar de Control.FindControl methode kunnen kijken
Auw - pijnlijk want dat had ik zelf moeten zien (dat werkt dus!). Toch denk ik dat ik voor het voorstel van whoami ga. Dat is ook handig voor de toekomst...

[ Voor 65% gewijzigd door shades op 02-05-2005 09:59 ]

https://k1600gt.nl