mercredi 18 novembre 2015

Select/Deselect All checkbox

I have a checkboxlist which gets its items from a sql table and change based on what is selected from a drop down menu. I'm trying to add another checkbox in that list which acts as a select/deselect all box. I've seen a few examples around this site, but nothing seems to work quite right.

Intended Functionality: When box is selected, all the other boxes are selected.

When box is un-selected, all the other boxes are selected.

When box is selected, if another box is then unselected, the select all box is unselected.

C#:

 List<ListItem> toBeRemoved = new List<ListItem>();

                //removes items when new item from dropdown is selected
                for (int i = 1; i < CheckOpenTimesheets.Items.Count; i++)
                {
                    toBeRemoved.Add(CheckOpenTimesheets.Items[i]);
                }
                for (int i = 0; i < toBeRemoved.Count; i++)
                {
                    CheckOpenTimesheets.Items.Remove(toBeRemoved[i]);
                }
                lblOpenTimesheets.Text = "";
                String sql = "sql statement here";
                command.CommandText = sql;
                command.Parameters.Add(new SqlParameter("userid", ddlActingAs.SelectedValue.ToString()));

                SqlDataReader reader = command.ExecuteReader();

                //Adds items to the checkboxlist
                while (reader.Read())
                {
                    ListItem item = new ListItem();
                    item.Text += reader.GetDateTime(0).ToString("MM/dd/yyyy") + " is open";
                    item.Value = reader["StartDate"].ToString();

                    CheckOpenTimesheets.Items.Add(item);
                }
                CheckOpenTimesheets.UpdateAfterCallBack = true;
                reader.Close();

//What I tried for the selection/deselection 
protected void select_DeselectAll(object sender, System.EventArgs e)
{
    if (CheckOpenTimesheets.Items[0].Selected == true)
    {
        foreach (ListItem item in CheckOpenTimesheets.Items)
        {
            item.Selected = true;
        }
       /* for (int i = 1; i < CheckOpenTimesheets.Items.Count; i++)
        {
            CheckOpenTimesheets.Items[i].Selected = true;
        }*/
    }
    else
    {
        foreach (ListItem item in CheckOpenTimesheets.Items)
        {
            item.Selected = false;
        }
    }
}

ASP:

<anthem:CheckBoxList ID="CheckOpenTimesheets" OnSelectedIndexChanged="select_DeselectAll" runat="server" AutoPostBack="true" >
    <asp:ListItem Text="Select/Deselect All"  />
</anthem:CheckBoxList>




Aucun commentaire:

Enregistrer un commentaire