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;
        }
    }