2009-10-28 4 views

Répondre

3

A partir de votre page, vous pouvez le faire

var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1"); 

Mais une meilleure solution dans mon esprit serait d'exposer les éléments sélectionnés par une propriété ou méthode.

Dans le contrôle de l'utilisateur

public string[] CheckedItems { 
    get { 
     List<string> checkedItems = new List<string>(); 
     foreach (ListItem item in checkbox1.Items) 
      checkedItems.Add(item.Value); 

     return checkedItems.ToArray(); 
    } 
} 

Puis, dans la page

var checkedItems = userControl1.CheckedItems; 

Vous pouvez aussi simplement revenir checkbox1.Items dans la propriété, mais ce n'est pas bonne encapsulation.

+0

droit, c'est ce que je veux faire - exposer les éléments sélectionnés à travers une propriété. – somacore

+0

J'ai changé mon code pour utiliser une propriété au lieu d'une méthode. – Bob

+0

Génial. Je vous remercie! – somacore

1

Si vous utilisez .net 3.5, vous pouvez créer une propriété en lecture seule qui utilise LINQ pour retourner un IList de seulement les valeurs sélectionnées:

public IList<string> SelectedItems{ 
     get { 
      return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList(); 
     } 

    } 
+0

Utilisant à peine .net 3.0 = \ – somacore

Questions connexes