2009-04-27 25 views
8

Bir sql veri kaynağına bağlı bir asp.net onay kutusu listesi var ve sayfa yük olayında CheckBoxList öğesinin sayısını kontrol ettiğimde 0'dır. Seçili öğeleri onay kutumda buradan ayarlayabilmek için ancak yapamıyorum.Asp.net'de birden çok seçili değer nasıl ayarlanır

Veri kaynağının seçili olayı, sayfa yüklenmesinden sonra patlar. Bu durumda, seçili öğeleri listemde nasıl ayarlayabilirim?

SelectedValue değerini bir değere ayarlarsanız, yalnızca seçilen tüm değerler yerine seçilen son değeri görüntüler. Pageload olayındaki onay kutu listemde birden fazla değeri nasıl seçebilirim?

cevap

1

Sayfa Yaşam Döngüsü - Veri Bağlantısı sorusu gibi görünüyor.

this question'a bir göz atmalısınız.

1

Seçilen öğeleri ayarlamak için DataBound olayını kullandım.

8

Bunun eski bir yazı olduğunu biliyorum ama son zamanlarda aynı problemi yaşadım.

Bir DataBound CheckBoxList öğesinin birden çok öğesini seçmek için, DataBound olayını işleyin ve Öğeler koleksiyonunu, seçilen öğeyi her öğe için ayrı ayrı ayarlayarak istediğiniz şekilde değiştirin.

Denetimin SelectedValue özelliğini ayarlamak yalnızca son öğeyi denetler.

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

System.Web.UI.WebControls ad alanını dahil etmeyi unutmayın. –

3

public void SetValueCheckBoxList (CheckBoxList kabl, dize sValues) { eğer {
ArrayList değerleri = StringToArrayList (sValues) (string.IsNullOrEmpty (sValues)!);
foreach (cbl.Items içinde ListItem li) { if (değerler.Contains (li.Value)) li.Selected = true; else 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; 
     } 

sayesinde slnavn2000

3

Güzel yöntem kullandığım:

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

Bu, aşağıdakileri yapmadığınız sürece bir hata atar: System.Linq kullanarak; – cdonner

+0

Benim için cbl.Items, Page_Load konumunda boş. – user7733611

0

seti CheckBoxList seçili öğeleri listeden:

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