【问题标题】:Button onClick event not firing after AJAX postback but the postback still occursAJAX 回发后按钮 onClick 事件未触发,但回发仍然发生
【发布时间】:2012-12-18 15:35:49
【问题描述】:

我有一个带有 DropDownList 的 UpdatePanel。在 UpdatePanel 中,我向 PlaceHolder 添加了一些自定义控件,其中有一个带有 OnClick="AddItemToCart" 的按钮。如果我刷新页面并按下按钮,则会调用 AddItemToCart 事件,如果我将 DropDownList 更改为页面加载的默认值以外的其他值,则不会触发 AddItemToCart 事件。我可以将 DropDownList 改回默认值,它会允许事件再次触发。

我认为这与事件注册有关,但我不确定在哪里查看。我已经尝试以编程方式将 OnClick 值分配给每个回发的按钮,但这似乎不起作用。我不明白出了什么问题,因为回发正在工作,但是我的事件没有被触发。

总而言之,如果下拉值与它在页面加载时加载的值不同,我的 OnClick 在 ajax 回发后不会触发。

这是我的代码(虽然我不确定它是否有用):

<asp:UpdatePanel ID="updSIListCnt" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:DropDownList id="ddlSort" runat="server" OnSelectedIndexChanged="ApplyFilters" AutoPostBack="True" Width="23%">
            <asp:ListItem Value="0">Sort By Relevancy</asp:listitem>
            <asp:ListItem Value="1">Sort By Product Code</asp:listitem>
            <asp:ListItem Value="2">Sort By Product Description</asp:listitem>
            <asp:ListItem Value="3">Sort By Price - Lowest</asp:listitem>
            <asp:ListItem Value="4">Sort By Price - Highest</asp:listitem>
        </asp:DropDownList>

        <asp:PlaceHolder id="phContentListCnt" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="upSIList" runat="server" AssociatedUpdatePanelID="updSIListCnt">
    <ProgressTemplate>
        <asp:Image id="imgLoading" runat="server" ImageUrl="~/Images/loading.gif" CssClass="loader" />
    </ProgressTemplate>
</asp:UpdateProgress>

phContentListCnt 包含以下几个实例:

 <asp:ImageButton ID="btnAddToBasket" runat="server" ImageUrl="~/Images/Buttons/add_to_basket.jpg" OnClick="AddItemToCart" CausesValidation="false" />

ApplyFilters 运行一些 SQL 并调用 UpdatePanel.Refresh()

【问题讨论】:

    标签: asp.net ajax events postback


    【解决方案1】:

    我设法找到了这个问题的原因。

    ApplyFilters 中,我正在重新加载控件并将它们添加到phContentListCnt,但我首先清除了占位符。这意味着在 Page_Load 中注册的事件也被清除了,此时注册新事件已经到了页面生命周期的后期。在此说明中,我正在使用 Request.Form[] 在页面加载中检查我的过滤器,以便我可以在页面加载中加载我的动态控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多