[asp.net] Wat is het nu van FindControl op control niveau?

Pagina: 1
Acties:

  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
Ik zit hier met een dilema.

Ik heb het volgende op m'n pagina staan:
code:
1
2
3
4
5
6
7
asp:table
  asp:tablerow
    asp:tablecell
      asp:button "btn1"
    asp:tablecell
      asp:button "btn2"
      asp:label "lbl2"


Als ik nu de itemindex van lbl2 wil weten doe ik dit:
(ik gebruik findcontrol en niet direct de control omdat ik gebruik maak van veel dynamische controls)
code:
1
tabel.rows(0).cells(1).controls.indexof( tabel.rows(0).cells(1).findcontrol( "lbl2" ))

Maar wat valt me op? Deze code werkt ook:
code:
1
tabel.rows(0).cells(1).controls.indexof( tabel.rows(0).cells(0).findcontrol( "lbl2" ))

Met andere woorden, FindControl werkt dus niet alleen binnen de cell waar ik hem aanroep, maar er ook buiten.
Waardoor ik eens verder keek, en blijkt dat je t zelfs zo kan doen:
code:
1
tabel.rows(0).cells(1).controls.indexof( me.findcontrol( "lbl2" ))


Nou vraag ik me ten eerste af, wat het nut is van FindControl op (in dit geval) cell niveau als die toch al pagina overkoepelend werkt.
En ten tweede, is het verstandig om dan gewoon voor elke FindControl een 'me.' voor te zetten?
Dat scheelt weer heel wat regels code.

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 20:57

mulder

ik spuug op het trottoir

Me == jouw form (is de container die doorzocht word naar het control)

[ Voor 65% gewijzigd door mulder op 14-02-2006 10:07 ]

oogjes open, snaveltjes dicht


  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
Ja, dat begrijp ik.
Maar waarom kan ik, als ik m'n FindControl uitvoer vanuit Cells(0) ook controls vinden die in Cells(1) staan?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Cryothic schreef op dinsdag 14 februari 2006 @ 10:08:
Ja, dat begrijp ik.
Maar waarom kan ik, als ik m'n FindControl uitvoer vanuit Cells(0) ook controls vinden die in Cells(1) staan?
Omdat findcontrol een method is van je page?

[ Voor 3% gewijzigd door RobIII op 14-02-2006 10:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • ZroBioNe
  • Registratie: Augustus 2001
  • Niet online
Don Facundo schreef op dinsdag 14 februari 2006 @ 10:05:
Me == jouw form (is de container die doorzocht word naar het control)
Niet, Me is de page.
De formnaam is je form.

  • tijn
  • Registratie: Februari 2000
  • Laatst online: 22-03 21:36
Cryothic schreef op dinsdag 14 februari 2006 @ 10:08:
Ja, dat begrijp ik.
Maar waarom kan ik, als ik m'n FindControl uitvoer vanuit Cells(0) ook controls vinden die in Cells(1) staan?
Omdat al deze controls zich binnen dezelfde naming container bevinden (zie ook INamingContainer interface). Pas op het moment dat de naming container verandert kun je ze niet meer met een globale FindControl() vinden. Dit is bijvoorbeeld het geval met een control dat zich binnen een datagrid bevindt.

Cuyahoga .NET website framework


  • Cryothic
  • Registratie: September 2001
  • Laatst online: 04-09-2024
Ah, ok.
Ik was in de veronderstelling dat die table zelf ook z'n eigen naming container vormde.
Pagina: 1