如何限制复选框列表选择最多4和5日选择它应该只清除第5个选定的项目

时间:2016-05-26 11:14:53

标签: c# asp.net checkboxlist

我需要创建一个复选框列表,它应该选择最多4个项目。 如果用户选择第5项,则应仅清除特定的第5项。 目前此代码始终清除checkboxlist的第一项。

这是我的c#:

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

这是我的HTML:

$('#9lessonsLinks').html(div_data);

2 个答案:

答案 0 :(得分: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;
                }
            }
        }  

答案 1 :(得分:0)

我发现使用javascript的答案如下: 这可能有助于某人:我正在使用此控件.multiselect-container&gt; li> a&gt;标签&gt;输入,因为我的控件是在模板设计中使用这种方式呈现的。但你可以使用代码的逻辑..谢谢

  $('.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;
                            } 
                        }
                }


            }
        });