在下面的示例中,checkboxlist列表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列表项,我需要得到相同的值吗?
我应该使用哪个事件,因为现在我使用选定的索引更改,它只是给我选择的值而不是未选择的值?
请帮忙
答案 0 :(得分:1)
在您的代码中,您可以将事件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();
答案 1 :(得分:0)
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 + ",";
}
}
}
答案 2 :(得分:0)
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”表单元素查找目标复选框的索引,然后检查其是否未选中。如果未经检查则获得它的价值。
答案 3 :(得分:-1)
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 + ",";
}
}
}