C# CheckChanged事件不是';t当一个盒子取消勾选另一个盒子时点火
我在一页上有两个复选框:C# CheckChanged事件不是';t当一个盒子取消勾选另一个盒子时点火,c#,asp.net,checkbox,C#,Asp.net,Checkbox,我在一页上有两个复选框: <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=
<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" />
以下是我想要的条件:
chk1
已选中<代码>chk2未选中<然后选中code>chk2,这会导致chk1
取消选中并触发其事件chk2
已选中<代码>chk1未选中<然后选中code>chk1,这会导致chk2
取消选中并触发其事件1.
,因为如果我做了那项工作,我可以做第二项工作。我遇到的问题是,当选中chk2
时,它会取消选中chk1
,但是chk1\u CheckedChanged
不会被触发
chk1\u CheckedChanged
在选中/取消选中时自行工作
奇怪的是,如果我勾选,取消勾选,然后勾选chk2
,chk1\u CheckedChanged
被激发,但chk1
从未改变,然后chk2\u CheckedChanged
被激发
我对这里到底发生了什么感到困惑
我在两个
复选框中使用了AutoPostBack,因为这似乎是类似问题的解决方案,但也没有成功。抱歉,刚刚编辑了我的帖子,我已经尝试过了。我已经为每个单独设置了自动回邮,也为一起设置了自动回邮,但仍然不起作用。看起来您的复选框正确地触发了相应的CheckedChanged事件。你需要弄清楚业务逻辑。一点运气都没有。当复选框实际发生更改时,checkedchange事件不会发生对我来说没有意义。您最好将chk1_CheckedChanged中的代码封装到一个方法中,然后您可以在chk2_CheckedChanged中调用该方法,而不必期望从另一个控件触发事件。看起来您正在使用第三方AJAX产品。这些不是ASP.NET复选框,而是Anthem复选框。我会更新你的问题和标签,让你知道这一点,这样你可以得到具体的帮助。我不熟悉该库,但您是否尝试过在控件声明中将AutoUpdateAfterCallBack设置为true?根据文档,默认情况下不会更新控件,并且您也不会在服务器端代码中同时设置复选框的UpdateAfterCallBack属性。顺便说一句,AutoPostBack是为ASP.NET控件设计的,AutoCallBack似乎是Anthem的等价物。对不起,刚刚编辑了我的文章,我已经尝试过了。我已经为每个单独设置了自动回邮,也为一起设置了自动回邮,但仍然不起作用。看起来您的复选框正确地触发了相应的CheckedChanged事件。你需要弄清楚业务逻辑。一点运气都没有。当复选框实际发生更改时,checkedchange事件不会发生对我来说没有意义。您最好将chk1_CheckedChanged中的代码封装到一个方法中,然后您可以在chk2_CheckedChanged中调用该方法,而不必期望从另一个控件触发事件。看起来您正在使用第三方AJAX产品。这些不是ASP.NET复选框,而是Anthem复选框。我会更新你的问题和标签,让你知道这一点,这样你可以得到具体的帮助。我不熟悉该库,但您是否尝试过在控件声明中将AutoUpdateAfterCallBack设置为true?根据文档,默认情况下不会更新控件,并且您也不会在服务器端代码中同时设置复选框的UpdateAfterCallBack属性。顺便说一句,AutoPostBack是针对ASP.NET控件的,AutoCallBack似乎是Anthem的等价物。
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;
}
}