2017-07-18 4 views
0

Ich verwende eine CheckBoxList, um eine Gruppe von Geschäftseinheiten anzuzeigen. Ich möchte die Auswahl auf maximal 5 Elemente beschränken und wenn der Benutzer den 6. Artikel auswählt, sollte ich einen Alarm anzeigen und den 6. ausgewählten Artikel abwählen.CheckBoxList - Auswahl auf eine bestimmte Nummer beschränken

Die Steuerung ist wie folgt:

<asp:CheckBoxList ID="ckBLBusinessUnits" onclick="loader(this.id);" runat="server" AutoPostBack="True" Visible="false" OnSelectedIndexChanged="ckBLBusinessUnits_SelectedIndexChanged"></asp:CheckBoxList> 

JS Funktion i bin mit:

function loader(controlID) { 
    modal = document.getElementById('loadingImage'); 
    modal.style.display = "block"; 

    if (controlID == "ckBLBusinessUnits") 
    { 
     if (($('#ckBLBusinessUnits :checkbox:checked').length) > 5) 
     { 
      alert("Max 5 BU's can be selected"); 
//is it possible to uncheck here? I am unable to find any method to do so. 
     } 
    } 
} 

C# unten:

protected void ckBLBusinessUnits_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (selectedValues.Count <= 5) 
      { 
       //Do something and then disable the loader. 
       loadingImage.Style.Add("display", "none"); 
      } 
      else if (selectedValues.Count > 5) 
      { 
       //is it possible to uncheck here? I am unable to find any method to do so. 
      } 

     } 

Antwort

0

Das ist nicht, was Sie gefragt sein könnte , aber es könnte für deinen Fall funktionieren. Deaktivieren Sie das Kontrollkästchen nicht, deaktivieren Sie die anderen Kontrollkästchen, wenn die Gesamtzahl der ausgewählten Elemente 5 ist, und zeigen Sie Ihre Warnung an.

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
     List<ListItem> SelectedItems = new List<ListItem>(); 

     foreach (ListItem ItemsSelected in CheckBoxList1.Items) 
     { 
      if (ItemsSelected.Selected) 
       SelectedItems.Add(ItemsSelected); 
     } 

     if(SelectedItems.Count() == 5) 
     { 
      // Display alert 

      foreach(ListItem item in CheckBoxList1.Items) 
      { 
       if(!SelectedItems.Contains(item)) 
       { 
        item.Enabled = false; 
       } 
      } 
     } else 
     { 
      foreach (ListItem item in CheckBoxList1.Items) 
      { 
       item.Enabled = true; 
      } 
     } 
} 
Verwandte Themen