代码之家  ›  专栏  ›  技术社区  ›  Andy_Vulhop

第一次未输入OnCheckChanged的复选框

  •  0
  • Andy_Vulhop  · 技术社区  · 14 年前
    <ajaxtoolkit:AccordionPane ID="accordianPaneAroundTheCheckbox" runat="server">
        <Content>
            <asp:UpdatePanel ID="updatePanelAroundTheCheckbox" runat="server" >
                <ContentTemplate>
                    <div>
                        <asp:CheckBox ID="chkFoo" AutoPostBack="true"  runat="server" OnCheckedChanged="DoBar"/>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>
        </Content>
    </ajaxtoolkit:AccordionPane>
    

    我把断点放在 Page_Load DoBar . 第一次单击该复选框时,上的断点 被击中了,但是 不是。第二次单击复选框时,两个断点都被命中。

    为什么会这样?我没有动态生成复选框。它的ClientID每次都是相同的(没有动态生成或标识的容器)。我已经试过重新订阅 页面加载 ,但它并没有第一次击中,只是在随后的两次击中。

    更新

    2 回复  |  直到 14 年前
        1
  •  0
  •   Tchami    14 年前

    你粘贴的源代码正确吗?我这样问是因为没有名为OnCheckChanged的事件,但是有一个OnCheckedChanged事件。使用您的代码,当复选框的标记如下所示时,它可以正常工作:

    <asp:CheckBox ID="chkFoo" runat="server" AutoPostBack="true" OnCheckedChanged="DoBar"/>
    
        2
  •  0
  •   Andy_Vulhop    14 年前

    服务器端没有设置该复选框。表单由对PageMethod的ajax调用填充,PageMethod从服务器提取数据包并填充控件。问题是服务器认为它没有被选中,但是javascript检查了它。当我取消选中它时,回发发生了,viewstate仍然认为它以前的状态是取消选中的,而现在的状态是取消选中的。因此,CheckedChanged事件不会触发。