【发布时间】:2014-10-29 18:42:20
【问题描述】:
我有一个复选框,我已按以下方式声明
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。有人知道为什么会这样吗?
【问题讨论】:
-
我认为您可能会遇到“复选框”变量的范围问题。您正在重新分配: checkbox = (CheckBox)aItem.FindControl("TownCheckbox");您不应该重新分配复选框。
-
在哪里动态创建区域组复选框?
-
@zam664 我不这么认为。与复选框变量相关的所有功能都可以正常工作。如果我将 if 条件切换为 !((CheckBox)sender).Checked 它将始终正确执行 else 子句
-
@Win 在转发器的 OnItemDataBound 中并将其设置为转发器中的占位符。
-
@KHeaney 动态创建控件可能会导致问题,但我不能说没有看到你的其余代码。请上传 aspx 和后面的代码。
标签: c# asp.net webforms asp.net-4.5