J'ai besoin d'une fonction récursive qui trouvera tous les contrôles sur une page et permette d'ajouter des attributs de contrôle javascript en fonction du type de contrôle.Recherche récursive des contrôles de page et ajout d'attributs?
Le problème est que j'ai une page avec plusieurs panneaux qui ont des contrôles. Les panneaux pourraient même avoir des panneaux/contrôles imbriqués.
Malheureusement ce qui suit ne fait pas ce que je veux, mais je cherche quelque chose de similaire ....
Action<Control> traverse = null;
//in a function:
traverse = (ctrl) =>
{
//ctrl.Enabled = false; //or whatever action you're performing
foreach (Control c in ctrl.Controls)
{
Response.Write(c.GetType().ToString() + " : " + c.ID.ToString() + "<br />");
if (c.GetType() == typeof(TextBox))
{
((TextBox)(c)).Attributes["onKeypress"] = "javascript:return FormEdited();";
}
else if (c.GetType() == typeof(DropDownList))
{
((DropDownList)(c)).Attributes["onchange"] = "javascript:return FormEdited();";
}
else if (c.GetType() == typeof(CheckBox))
{
((CheckBox)(c)).Attributes["onClick"] = "javascript:return FormEdited();";
}
}
traverse = (ctrl2) => ctrl.Controls.GetEnumerator();
};
Merci pour votre inscription. Finalement, je suis allé avec une méthode qui utilise Linq pour aplatir tous les contrôles de la page (fonctionne si tous les contrôles sont uniquement nommés), donc je n'ai pas à traverser la hiérarchie. – ElHaix