de code Exemple:Trouble with FindControl et contrôles dynamicly créés
var div = new HtmlGenericControl("div");
div.Controls.Add(new Literal() { ID = "litSomeLit" });
var lit = (Literal)div.FindControl("litSomeLit");
Assert.IsNotNull(lit);
Ce code échoue assert, car nul est allumé. Le débogage montre que div.Controls contient définitivement un littéral avec l'ID de "litSomeLit". Mes questions sont "Pourquoi?" et "Y at-il un moyen d'obtenir un contrôle d'un ID spécifique sans faire une recherche récursive de div.Controls [] à la main un élément à la fois?"
La raison pour laquelle je fais les choses de cette façon est que mon application actuelle n'est pas si simple - une méthode que j'écris est donné un contrôle complexe avec plusieurs sous-contrôles dans un certain nombre de configurations possibles. J'ai besoin d'accéder à un contrôle spécifique plusieurs couches vers le bas (par exemple, le contrôle avec l'ID "txtSpecificControl" pourrait être à StartingControl.Controls[0].Controls[2].Controls[1].Controls[3]
). Normalement, je pourrais juste faire FindControl("txtSpecificControl")
, mais cela ne semble pas fonctionner quand les contrôles ont été créés dynamiquement (comme dans l'exemple de code ci-dessus).
+1 Belle fonction récursive. Très utile – brenjt