我在页面上有两个复选框:
<anthem:CheckBox ID="chk1" Text="Include Deactivated Users" runat="server" AutoCallBack="true" OnCheckedChanged="chk1_CheckedChanged" />
<anthem:CheckBox ID="chk2" Text="Exclude Deactivated Users" runat="server" AutoCallBack="true" OnCheckedChanged="chk2_CheckedChanged" />
CheckedChanged事件的代码隐藏:
protected void chk1_CheckedChanged(object sender, EventArgs e)
{
//calls some random functions to check stuff
lstUsers.UpdateAfterCallBack = true; //updates a checkboxlist 'lstUsers'
chkAllUsers.UpdateAfterCallBack = true; //updates another checkbox
}
protected void chk2_CheckedChanged(object sender, EventArgs e)
{
CheckBox box = (CheckBox)sender;
if (box.Checked == true)
{
chk1.Checked = !box.Checked;
}
}
这是我想要的条件:
chk1
已经过检查。 chk2
未经检查。然后检查chk2
,这会导致chk1
取消选中并触发它的事件。chk2
已经过检查。 chk1
未经检查。然后检查chk1
,这会导致chk2
取消选中并触发它的事件。我现在只在1.
工作,因为如果我开始工作,我可以完成第二项工作。我遇到的问题是,当选中chk2
时,它会取消选中chk1
,但chk1_CheckedChanged
永远不会被解雇。
chk1_CheckedChanged
会自行处理。
奇怪的是,如果我检查,取消选中,然后检查chk2
,chk1_CheckedChanged
被解雇但chk1
永不改变,则chk2_CheckedChanged
被解雇。
我对这里究竟发生了什么感到困惑。
我已经为两个checkboxes
弄乱了AutoPostBack,因为这似乎是类似问题的解决方案,但也没有运气。