2015-03-06 4 views
0

Quelqu'un peut-il m'aider avec le problème suivant ?: Im créer un contrôle checkboxlist de manière dynamique pour chaque élément de ma liste avec des catégories. Im placer chaque checkboxlist sur la div connexe. Chaque cheackboxlist contient ses propres éléments basés sur le paramètre "Parameter".problèmes avec trouver checkboxlist ID avec findcontrol

je dois vérifier les éléments sont vérifiés, donc fait i foreach boucle pour trouver la commande:

foreach (Control c in div.Controls) 
     { 
      CheckBoxList cblfound = (((CheckBoxList)c.FindControl("???"))); 

      foreach (ListItem item in cblfound Items) 
      { 
       if (item.Selected) 
       {} 

     } 

le problème est là. Net crée ses propres ID pour chaque Checkboxlist. Comment puis-je permettre de trouver le contrôle avec .findcontrol? im en utilisant .net 3.5

merci à l'avance

+0

Pourquoi vous ne l'utilisez 'linq'? –

+0

Pour faire quoi? en ajoutant le checkboxlistID dans une liste ou quelque chose? – user3114347

+0

FindControl, d'après MSDN, est destiné à trouver un contrôle dont l'ID n'est pas connu au moment du design. Vous créez vous-même le contrôle et le remplissez, vous devez donc "savoir" quel contrôle vous recherchez lorsque vous voulez voir ce qui a été vérifié. Je pense qu'il y a un décalage dans votre conception ou votre processus de pensée. –

Répondre

1

Peut-être que vous pourriez repenser votre approche en utilisant IEnumerable.OfType() et quelques LINQ supplémentaires, comme ceci:

var selectedControls = div.Controls.OfType(CheckBoxList).Where(item => item.Selected); 

foreach(CheckBoxList item in selectedControls) 
{ 
    ... 
} 
+0

var selectedControls = new Liste (); foreach (Contrôle de contrôle dans les div.Controls) { selectedControls.AddRange (contr.Controls.OfType ()); } foreach (liste d'éléments CheckBoxList dans selectedControls) {} J'ai résolu mon problème. merci pour la solution linq – user3114347