2009-04-27 9 views
8

Ich habe eine Checkliste von asp.net gebunden an eine Linq zu SQL-Datenquelle und wenn ich die Elementanzahl meiner CheckBoxList auf der Seite laden Ereignis ist es 0. Ich will um die ausgewählten Elemente auf meiner Checkbox-Liste hier zu setzen, kann aber nicht.Wie man mehrere ausgewählte Werte in asp.net checkboxlist

Das ausgewählte Ereignis der Datenquelle wird nach dem Laden der Seite ausgelöst. Wenn dies der Fall ist, wie kann ich die ausgewählten Elemente in meiner Liste festlegen?

Wenn ich den SelectedValue auf einen Wert einstelle, wird nur der zuletzt ausgewählte Wert anstelle aller ausgewählten Werte angezeigt. Wie kann ich mehrere Werte in meiner Checkbox-Liste im Pageload-Event auswählen?

Antwort

1

Klingt wie eine Page Lifecycle - Databinding Frage.

Sie sollten sich wirklich (die Antworten auf) this question ansehen.

1

Ich habe das DataBound-Ereignis verwendet, um die ausgewählten Elemente auszuwählen.

8

Ich weiß, das ist ein alter Beitrag, aber ich hatte in letzter Zeit das gleiche Problem.

Um mehrere Elemente einer DataBound CheckBoxList auszuwählen, behandeln Sie das DataBound-Ereignis und durchlaufen Sie die Items-Auflistung, indem Sie die Selected-Eigenschaft für jedes Element nach Bedarf einzeln festlegen.

Das Festlegen der SelectedValue-Eigenschaft des Steuerelements überprüft nur das letzte Element.

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

Vergessen Sie nicht, den Namespace System.Web.UI.WebControls einzubeziehen –

3

public void SetValueCheckBoxList (CheckBoxList cbl, string sValues) { wenn {
Arraylist Werte = StringToArrayList (sValues) (string.IsNullOrEmpty (sValues)!);
foreach (ListItem li im cbl.Items) { if (values.Contains (li.Value)) li.Selected = true; sonst li.Selected = false;
}
} }

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; 
     } 

Danke, slnavn2000

3

Nizza Methode, die ich verwenden:

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

Dies wird einen Fehler auslösen, wenn Sie nicht: using System.Linq; – cdonner

+0

Für mich ist cbl.Items bei Page_Load leer. – user7733611

0

Satz Checkboxlist ausgewählte Elemente aus einer Liste:

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