2016-05-26 16 views
0

我需要創建複選框列表,應該選擇最多4個項目。 如果用戶選擇第五項,那麼它應該只清除特定的第五項。 目前這段代碼總是清除checkboxlist的第一項。如何限制複選框列表選擇多達4和第5選擇它應該只清除第5選定的項目

這是我的C#:

protected void lstSalesPerson_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var items = from ListItem li in lstSalesPerson.Items 
        where li.Selected == true 
        select li; 

     Label1.Text = ""; 



     for (int i = 0; i < lstSalesPerson.Items.Count; i++) 
     { 

      if (lstSalesPerson.Items[i].Selected == true) 
      { 
       if (items.Count() > 4) 
       { 
        Label1.Text = "checked maximum 4 items.";      
        lstSalesPerson.Items[i].Selected = false; 
       } 
      } 
     }   
    } 

這是我的html:

<asp:ListBox ID="lstSalesPerson" runat="server" SelectionMode="Multiple" AutoPostBack="true" OnSelectedIndexChanged="lstSalesPerson_SelectedIndexChanged">             </asp:ListBox> 

回答

0

我發現使用答案JavaScript的是如下假

嘗試: 這可能幫助別人:我使用這個控件.multiselect-container> li> a> label> input,因爲我的控件是在模板設計中使用這種方式呈現的。但你可以使用你的代碼邏輯..謝謝

$('.multiselect-container > li > a > label > input').click(function (e) {    
      var ddl = document.getElementById("<%=lstSalesPerson.ClientID%>");    
      if ($(this).prop('checked')) {     
       var count = 0;      
       for (var i = 0; i < ddl.options.length; i++) { 
         if (ddl.options[i].selected) { 
          count++; 
          if (count > 3) {         
           $(this).removeAttr('checked'); 
        $(this).parent().parent().parent().prop('checked', false); 
        $(this).parent().parent().parent().prop('clicked', false); 
        $(this).parent().parent().parent().removeClass('active'); 
           alert("You can select Max 4 sales person."); 
           return false; 
          } 
         } 
       } 


      } 
     }); 
+0

此代碼在鉻和其他瀏覽器,除IE外正常工作....有人可以幫助我或更正此代碼。 ..這將有所幫助... – Ajinkya

0

你應該反向循環如下。在你的循環中,它從索引[0]開始,並檢查總選擇的項目是否大於4,如果正確,它將錯誤的第一個項目。

所以循環應該是從反向索引。因此,如果選擇5個項目,然後選擇第一個指數將是[4],它會得到下面的代碼

for (int i = lstSalesPerson.Items.Count-1; i >=0 ; i--) 
{ 

      if (lstSalesPerson.Items[i].Selected == true) 
      { 
       if (items.Count() > 4) 
       { 
        Label1.Text = "checked maximum 4 items.";      
        lstSalesPerson.Items[i].Selected = false; 
       } 
      } 
     } 
+0

謝謝,但現在它正在清除最後一項...它應該只清除最後選擇。我該怎麼辦? – Ajinkya

+0

@AjinkyaWavare沒有得到你 – Sachu

+0

以前它總是清除第一個項目時總是當第五個項目被選中...現在它清除列表項目的最後一個元素....它應該清除任何中間即第5個選定項目.. 。 – Ajinkya

相關問題