Получить непроверенное значение элемента списка из списка чеков C#
В приведенном ниже примере, список флажков 6 элементов списка, и если я сниму флажок с любого элемента, я смогу получить непроверенное значение
<asp:CheckBoxList id="chkbxFileTypes" runat="server" OnSelectedIndexChanged="chkbxFileTypes_SelectedIndexChanged" AutoPostBack=true>
<asp:ListItem>Item 1</asp:ListItem>
<asp:ListItem>Item 2</asp:ListItem>
<asp:ListItem>Item 3</asp:ListItem>
<asp:ListItem>Item 4</asp:ListItem>
<asp:ListItem>Item 5</asp:ListItem>
<asp:ListItem>Item 6</asp:ListItem>
</asp:CheckBoxList>
Если я сниму флажок с элемента Item1, мне нужно получить значение того же самого?
Какое событие я должен использовать, так как теперь я использую выбранное изменение индекса, и оно просто дает мне выбранное значение, а не невыбранное значение?
Пожалуйста помоги
4 ответа
В вашем коде позади вы можете обработать событие chkbxFileTypes_SelectedIndexChanged
лайк:
protected void chkbxFileTypes_SelectedIndexChanged(object sender, EventArgs e)
{
List<ListItem> selected = chkbxFileTypes.Items.Cast<ListItem>()
.Where(li => ! li.Selected)
.ToList();
}
или с простым foreach:
List<string> selectedValues = chkbxFileTypes.Items.Cast<ListItem>()
.Where(li => ! li.Selected )
.Select(li => li.Value)
.ToList();
protected void chkbxFileTypes_SelectedIndexChanged(object sender, EventArgs e)
{
string checkedid = "";
string uncheckedValue = "";
foreach (ListItem val in chkbxFileTypes.Items)
{
if (val.Selected)
{
checkedid += val.Value + " ";
}
else
{
uncheckedValue += val.Value + ",";
}
}
}
protected void chkbxFileTypes_SelectedIndexChanged(object sender, EventArgs e)
{
string eventTarget = Request.Form.Get("__EVENTTARGET");
int index = Convert.ToInt32(eventTarget.Substring(eventTarget.Length-1));
bool isUnchecked = !chkbxFileTypes.Items[index].Selected;
if (isUnchecked)
{
string value = chkbxFileTypes.Items[index].Value;
}
}
Используйте элемент формы "__EVENTTARGET", чтобы найти индекс целевого флажка, а затем проверьте, не отмечен ли он. Если его не проверять, тогда получите его значение.
protected void chkbxFileTypes_SelectedIndexChanged(object sender, EventArgs e)
{
string checkedValue = "";
string uncheckedValue = "";
foreach (ListItem val in chkbxFileTypes.Items)
{
if (val.Selected)
{
checkedValue += val.Value + " ";
}
else
{
uncheckedValue += val.Value + ",";
}
}
}