我有一个我用以下方式声明的复选框
checkbox = new CheckBox();
checkbox.ID = "AreaGroup";
checkbox.AutoPostBack = true;
checkbox.CheckedChanged += new System.EventHandler(this.EHArea_Clicked);
然后我使用以下方法在后面的代码中声明EHArea_Clicked函数
void EHArea_Clicked(Object sender, EventArgs e)
{
foreach (RepeaterItem aItem in Repeater1.Items)
{
checkbox = (CheckBox)aItem.FindControl("TownCheckbox");
if (((CheckBox)sender).Checked)
{
checkbox.Checked = true;
}
else
{
checkbox.Checked = false;
}
}
}
我遇到的问题是
((CheckBox)sender).Checked
无论我是选中还是取消选中复选框,始终评估为true。有没有人知道为什么会这样?
答案 0 :(得分:0)
我相信你的好处是你正在重用checkbox
变量。你需要一个新的变量。尝试这样的事情。您也可以将if else减少到一行。
void EHArea_Clicked(Object sender, EventArgs e)
{
foreach (RepeaterItem aItem in Repeater1.Items)
{
CheckBox currentCheckBox = (CheckBox)aItem.FindControl("TownCheckbox");
currentCheckBox.Checked = ((CheckBox)sender).Checked;
}
}