2014-10-29 72 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

相關問題