2009-10-22 6 views
0

J'ai 8 ou plusieurs contrôles Image chacun dans HyperLink et PlaceHolder J'ai besoin de changer les paramètres de chacun. C'est pour un contrôle de galerie Sitefinity. En ce moment, je fais cette fois 8:Comment faire une boucle sur les contrôles imbriqués dans .net C#?

if (String.IsNullOrEmpty(Image_1_File_Name) == true) { 
    Image1_ph.Visible = false; 
    } 
    else { 
    productImageLink1.NavigateUrl = Folder_URL + Image_1_File_Name + "_l.jpg"; 
    productImageLink1.Attributes.Add("rel", "zoom-id:"+ zoom.ClientID +";zoom-fade: true"); 
    productImageLink1.Attributes.Add("rev", Folder_URL + Image_1_File_Name + "_m.jpg"); 
    productImage1.ImageUrl = Folder_URL + Image_1_File_Name + "_tn.jpg"; 
    productImage1.AlternateText = Image_1_Alt_Tag; 
    } 

Je viens de copier coller & et remplacer le numéro. Mais je veux faire ceci dans une boucle je ne peux juste pas trouver un moyen de référencer chaque ensemble de contrôles.

Comment cela peut-il être accompli?

Répondre

4

Vous pouvez utiliser la récursivité pour faire défiler les différentes commandes des panneaux. Here est un exemple.

+0

Parfait pour la récursivité. +1 –

+0

Notez que cet exemple vérifie les types de contrôle spécifiques, pas * tous * les contrôles, lors de la désactivation. Typiquement, vous utiliseriez simplement quelque chose comme Contrôles [i] .Enabled = false; pour quelque chose comme ça. –

+0

et aussi l'une des plus grandes plaintes que j'ai avec le framework .Net. Quand j'appelle .FindControl ("mytextbox"). . . . Pourquoi dois-je recurder manuellement à travers l'arbre de contrôle? Je suis si fatigué de si (mytextbox.HasControls()) {recurision} endif .... – andrewWinn

0

Voici une approche qui peut travailler pour vous:

  1. Créer une classe qui est héritée de HyperLink (autre pour PlaceHolder)
  2. Ajouter une propriété à la classe qui vous permettra de définir le nombre pour l'URL de l'image.
  3. Ensuite, dans la fonction Initialize pour le contrôle dérivé, vous pouvez réparer votre base NavigateUrl (et vos autres propriétés) sur la propriété que vous avez créée à l'étape 2.
  4. Utilisez votre nouvelle classe dans les formulaires (au lieu des contrôles HyperLink et PlaceHolder), dans le concepteur définissez votre propriété à l'étape 2.

Ceci éliminera le besoin de la boucle. Une recherche google vous donnera probablement toutes sortes d'aide/tutoriel sur la façon de créer des contrôles serveur hérités.