2009-04-27 6 views
8

J'ai une liste de case à cocher asp.net liée à une source de données linq to sql et quand je vérifie le nombre d'éléments de mon CheckBoxList sur l'événement de chargement de la page, il est 0. Je veux pour être en mesure de définir les éléments sélectionnés sur ma liste de contrôle ici, mais ne peut pas.Comment définir plusieurs valeurs sélectionnées dans asp.net checkboxlist

L'événement sélectionné de la source de données se déclenche après le chargement de la page. Si c'est le cas, comment puis-je définir les éléments sélectionnés dans ma liste?

Si je mets la valeur SelectedValue à une valeur, elle n'affiche que la dernière valeur sélectionnée à la place de toutes les valeurs sélectionnées. Comment puis-je sélectionner plusieurs valeurs dans ma checkboxlist dans l'événement pageload?

Répondre

1

Cela ressemble à un cycle de vie de page - question de liaison de données.

Vous devriez vraiment jeter un oeil à (les réponses à) this question.

1

J'ai utilisé l'événement DataBound pour sélectionner les éléments sélectionnés.

8

Je sais que c'est un vieux message mais j'ai eu le même problème récemment.

Pour sélectionner plusieurs éléments d'une CheckBoxList DataBound, gérez l'événement DataBound et effectuez une boucle dans la collection Items en définissant la propriété Selected individuellement sur chaque élément comme requis.

La définition de la propriété SelectedValue du contrôle vérifie uniquement l'élément final.

foreach (ListItem item in MyCheckBoxList.Items) 
{ 
    item.Selected = ShouldItemBeSelectedMethod(item.Value); 
} 
+0

ne pas oublier d'inclure l'espace de noms System.Web.UI.WebControls –

3

SetValueCheckBoxList public void (CheckBoxList, cbl sValues ​​string) { si {
valeurs ArrayList = StringToArrayList (de sValues) (String.IsNullOrEmpty (sValues)!); Ford (ListItem li dans cbl.Items) { if (values.Contains (li.Value)) li.Selected = true; sinon li.Sélectionné = faux;
}}
}

private ArrayList StringToArrayList(string value) 
     { 
      ArrayList _al = new ArrayList(); 
      string[] _s = value.Split(new char[] { ',' }); 

      foreach (string item in _s) 
       _al.Add(item); 

      return _al; 
     } 

Merci, slnavn2000

3

méthode de Nice J'utilise:

private void SetCheckBoxListValues(CheckBoxList cbl, string[] values) 
     { 
      foreach (ListItem item in cbl.Items) 
      { 
       item.Selected = values.Contains(item.Value); 
      } 
     } 
+0

Cela va générer une erreur sauf si vous avez: using System.Linq; – cdonner

+0

Pour moi, cbl.Items est vide sur Page_Load. – user7733611

0

ensemble CheckBoxList éléments sélectionnés dans une liste:

 List<int> yourlist; 
     //fill yourlist 
     foreach (ListItem item in checkboxlist.Items) 
     { 
      if (yourlist.Contains(int.Parse(item.Value.ToString()))) 
       item.Selected = true;     
     } 
Questions connexes