У меня есть checkboxlist, который получает его элементы из таблицы sql и меняются в зависимости от того, что выбрано в раскрывающемся меню. Я пытаюсь добавить еще один флажок в этот список, который действует как флажок select/deselect all. Я видел несколько примеров вокруг этого сайта, но, похоже, ничего не работает.Выбрать/Снять все флажок
Предполагаемые функциональные возможности: Если выбрано поле, выбраны все остальные поля.
Когда поле не выбрано, выбраны все остальные поля.
Если выбрано поле, если другое поле не выбрано, поле «Выбрать все» не выбрано.
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();
То, что я пытался для выделения/снятия:
protected void select_DeselectAll(object sender, System.EventArgs e)
{
if (CheckOpenTimesheets.Items[0].Selected == true)
{
foreach (ListItem item in CheckOpenTimesheets.Items)
{
item.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>
Edit: Проблема, кажется, является OnSelectedIndexChanged событие стрельбы, когда выбраны флажки, отличные от выбранного всего.
Edit2: установлен флажок «Выбрать все» отдельно от флажка. Однако при попытке реализовать функцию, где, если флажок не выбран, когда установлен флажок «Выбрать все», флажок «Выбрать все» затем отменяется, но все остальные не «отменяют». Этого не происходит, потому что срабатывает событие «Выбрать все флажок».
protected void chkAll_CheckedChanged(object sender, EventArgs e)
{
foreach (ListItem item in CheckOpenTimesheets.Items)
{
item.Selected = chkAll.Checked;
}
}
protected void checkbox_Selected(object sender, EventArgs e)
{
chkAll.CheckedChanged -= chkAll_CheckedChanged;
foreach (ListItem item in CheckOpenTimesheets.Items)
{
if ((item.Selected = false) && (chkAll.Checked = true))
{
chkAll.Checked = false;
}
}
}
Что не работает? Добавление пункта выбора/отмены выбора всего? Или фактически выполняет выбор и отмену выбора других предметов? –
Обновлен код с моей попыткой выбора/отмены выбора. У меня есть элемент select/deselect, добавленный в asp-код. – pfinferno
Это может быть последовательность событий. Вы можете проверить/снять флажок, но потом перестроить список. В любом случае, вы можете захотеть сделать это на клиенте с помощью JavaScript/JQuery. Это было бы более удобным и быстрым. –