Je parcourt une collection de tables asp: tablerows pour pouvoir obtenir ou définir le texte dans une zone de texte imbriquée dans la troisième cellule de la ligne; Je le fais par type plutôt que par ID parce que les ID de cellule dans cette colonne ne sont pas totalement cohérents - donc je ne peux pas vraiment appeler FindControl() pour y parvenir. J'ai converti le troisième contrôle dans le TableRow en TableCell et puis Casting le premier contrôle dans cette cellule à un TextBox. Pas tout à fait correct, car je reçois un index hors de portée exception levée. Le problème réside principalement dans la propriété Controls.Count() de la troisième cellule, qui revient à zéro.Accès au contrôle enfant asp.net tablerow par type
Vous ne savez pas s'il existe un meilleur moyen d'accéder à la zone de texte --- dois-je recourir à FindControl()?
Le code:
foreach (TableRow row in tblProviders.Rows) {
string value = ((TextBox)((TableCell)row.Controls(2)).Controls(0)).Text;
...
}
Mes recherches ici que l'utilisation de FindControl donné(), de sorte que peut-être la seule façon ...
Merci!
Pourquoi l'ID de cellule est-elle incohérente? Pouvez-vous donner un exemple? Utilisez-vous ClientID? –
@ Daniel-votre appel récursif a parfaitement fonctionné. Vous ne savez pas comment/pourquoi utiliser ClientID dans cette instance. Les deux premières valeurs de la zone de texte sont uniques par rapport aux autres dans cette colonne (les deux seront affichées de manière statique, les autres seront dynamiques), j'ai donc assigné des identifiants de façon appropriée. Merci encore! – Todd
@ Ben-votre solution est super élégante et a également travaillé, mais Daniel vous a battu au punch. J'ai upvoted votre réponse indépendamment. Merci! – Todd