use one function for multple checboxlist ASP.NET

Viewed 45

I have a function that prevents you from marking more than 5 options, which is executed "OnSelectedIndexChanged="chkMaterialCuarto_SelectedIndexChanged"".

            int a = chkMaterialCuarto.Items.Count;
            int contador = 0;
            for (int i = 0; i < a; i++)
            {
                if (chkMaterialCuarto.Items[i].Selected == true)
                    contador++;
            }
            if (contador > 5)
            {
                for (int i = 0; i < a; i++)
                {
                    if (chkMaterialCuarto.Items[i].Selected == true)
                    {
                        chkMaterialCuarto.Items[i].Selected = false;
                        break;
                    }
                }
            }

but now I want to use it for 3 other checkboxlists without having to do a function for each checkboxlist. this are my other chekboxlist

                                <div class="inner1">
                                    <span class="labelBoldForm fleft">material wall: </span></br>
                        <asp:CheckBoxList ID="chkMaterialwall" class="labelBoldForm fleft" AutoPostBack="true" runat="server" OnSelectedIndexChanged="chkMaterialCuarto_SelectedIndexChanged"></asp:CheckBoxList>
                                </div>
                                
                                
                                                                <div class="inner1">
                                    <span class="labelBoldForm fleft">materials silly : </span></br>
                        <asp:CheckBoxList ID="chkMaterialsilly" class="labelBoldForm fleft" AutoPostBack="true" runat="server" OnSelectedIndexChanged="chkMaterialCuarto_SelectedIndexChanged"></asp:CheckBoxList>
                                </div>
                                
                                                                <div class="inner1">
                                    <span class="labelBoldForm fleft">materials floor: </span></br>
                        <asp:CheckBoxList ID="chkfloor" class="labelBoldForm fleft" AutoPostBack="true" runat="server" OnSelectedIndexChanged="chkMaterialCuarto_SelectedIndexChanged"></asp:CheckBoxList>
                                </div>

how can i do that ?

1 Answers

This should work:

   protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Max5Check((CheckBoxList)sender);
    }


    void Max5Check(CheckBoxList ckList)
    {
        int SelectedCount = 0;
        foreach (ListItem MyCheck in ckList.Items)
        {
            if (MyCheck.Selected)                    
                SelectedCount++;

            if (SelectedCount > 5)
            {
                MyCheck.Selected = false;
                return;
            }
        }
    }
Related