2014-10-29 29 views
0

我有以下方式宣布为什么是始终CheckChanged处理复选框状态真

checkbox = new CheckBox(); 
checkbox.ID = "AreaGroup"; 
checkbox.AutoPostBack = true; 
checkbox.CheckedChanged += new System.EventHandler(this.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; 
     } 
    } 
} 
声明EHArea_Clicked功能后面的复选框

我的问题是,

((CheckBox)sender).Checked 

结果始终为true,无论如果我正在检查或取消选中复选框。有没有人有一个想法,为什么会发生这种情况?

+1

我想你可能会遇到与“复选框”变量的范围问题。你正在重新分配:checkbox =(CheckBox)aItem.FindControl(“TownCheckbox”);你不应该重新分配复选框。 – zam664 2014-10-29 19:00:42

+0

哪里动态创建AreaGroup CheckBox? – Win 2014-10-29 19:04:37

+0

@ zam664我不认为是这样。与复选框变量相关的所有功能都可以正常工作。如果将if条件切换为!((CheckBox)sender)。检查它将始终正确执行else子句 – KHeaney 2014-10-29 19:05:14

回答

0

我相信你的prolbem是你正在重复使用checkbox变量。你需要一个新的变量。尝试这样的事情。你也可以减少一行。

void EHArea_Clicked(Object sender, EventArgs e) 
{ 
    foreach (RepeaterItem aItem in Repeater1.Items) 
    { 
     CheckBox currentCheckBox = (CheckBox)aItem.FindControl("TownCheckbox"); 
     currentCheckBox.Checked = ((CheckBox)sender).Checked; 
    } 
} 
+0

我刚刚尝试声明一个新的变量,并彻底重新选中复选框。这两种方法都没有解决发件人复选框始终评估为真的问题。 – KHeaney 2014-10-29 19:15:32

相关问题