我的aspx页面上有一个复选框,从一个字符串列表中加载(基于其他一些变量), 我只希望用户能够选择这些盒子的常数;当前的常数是6.在我的代码背后,我一直试图验证这一点;如果' selectedCount'等于我在另一堂课中发现的常数我会做点什么。问题是它没有识别支票。
int selectedCount = 0;
for (int i = 0; i < checkbox.Items.Count; i++)
{
if (checkbox.Items[i].Selected == true)
{
selectedCount++;
}
}
我的问题是它遍历列表中的每个项目,但即使在所选项目上,它也会返回false。如何在这样的情况下正确检查我选择/未选择的bool?因为这显然不是在做伎俩。
答案 0 :(得分:0)
我能想到的一件事是你在回发中再次绑定CheckBoxList。
为了防止它,你想使用 IsPostBack 。
<asp:CheckBoxList runat="server" ID="CheckBoxList1" />
<asp:Button runat="server" ID="Button1" Text="Submit" OnClick="Button1_Click" />
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
CheckBoxList1.Items.Add(new ListItem("One", "1"));
CheckBoxList1.Items.Add(new ListItem("Two", "2"));
CheckBoxList1.Items.Add(new ListItem("Three", "3"));
CheckBoxList1.Items.Add(new ListItem("Four", "4"));
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int selectedCount = 0;
var selectedText = new List<string>();
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected)
{
selectedCount++;
selectedText.Add(item.Text);
}
}
}