J'ai du code ASP.NET qui génère dynamiquement des lignes et des cellules pour un contrôle Table sur la page.Utilisation de FindControl sur les contrôles générés dynamiquement
J'ai spécifiquement défini l'ID de chaque cellule, mais j'ai du mal à trouver FindControl pour les trouver.
Voici le code que j'utilise pour créer les cellules:
tbc = New TableCell
tbr.Cells.Add(tbc)
tbc.ID = String.Format("tc_{0}-{1}-{2}", curStartDate.Day, curStartDate.Month, curStartDate.Year)
Juste en dessous, j'essaie de trouver le contrôle avec les éléments suivants:
Dim ctlName As String = String.Format("tc_{0}-{1}-{2}", curStartDate.Day, curStartDate.Month, curStartDate.Year)
Dim ctl As Control = tblAllocations.FindControl(ctlName)
J'ai essayé permutant la ligne déclare l'ID, avec la ligne qui ajoute la cellule à la collection Cells du TableRow, et cela le fait fonctionner. Mais tout au long de mon application, j'ai les déclarations dans l'ordre comme ci-dessus, et ils fonctionnent bien (FindControl peut trouver le contrôle avec l'ID correct).
Y at-il quelque chose d'évident qui me manque?
Oui, il a été définitivement ajouté. Je peux voir la ligne et les cellules dans la sortie de la page. Les cellules ont également leur ID sortie vers le HTML. –
Je voulais dire qu'au moment où vous appelez FindControl, la ligne a-t-elle été ajoutée à la table? tblAllocations.Rows.Add (tbr) doit être passé avant tblAllocations.FindControl va trouver une cellule dans ce tbr – AnthonyWJones
Il a été définitivement ajouté correctement. Je pense que j'ai cependant réduit le problème. J'ai DropDownList sur lequel j'appelle la méthode DataBind avant de créer les contrôles. Lorsque je supprime cet appel à DataBind, tout fonctionne correctement. C'est vraiment bizarre. –