Losing Button.Click events after first partial postback in UpdatePanel
asp.net, asp.net-ajax, postback, user-controls
Solution
It seems that adding UseSubmitBehavior="false" to the button definitions has solved my problem. Still don't know why that first button click worked at all.
Problem
I have a Page that has a single instance of a UserControl that itself has a single UpdatePanel. Inside the UpdatePanel are several Button controls. The Click event for these controls are wired up in the code-behind, in the Init event of the UserControl. I get the Click event for the first button I push, every time, no problem. After that, I only get Click events for one button (SearchButton) - the rest are ignored. I have included the code for the control below - for sake of brevity, I have excluded the click event handler methods, but they are all of the standard "void Button_Click(object sender, EventArgs e)" variety. Any ideas? ``` <asp:UpdatePanel ID="PickerUpdatePanel" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Panel ID="Container" runat="server"> <div> <asp:TextBox ID="PickerResults" runat="server" style="margin-right: 3px;" SkinID="Plain" /> <asp:Image ID="LaunchPopup" runat="server" ImageUrl="~/images/icons/user_manage.png" ImageAlign="Top" BorderColor="#294254" BorderStyle="Dotted" BorderWidth="1px" Height="20px" Width="20px" style="cursor: pointer;" /> </div> <asp:Panel ID="PickerPanel" runat="server" DefaultButton="OKButton" CssClass="popupDialog" style="height: 227px; width: 400px; padding: 5px; display: none;"> <asp:Panel runat="server" id="ContactPickerSearchParams" style="margin-bottom: 3px;" DefaultButton="SearchButton"> Search: <asp:TextBox ID="SearchTerms" runat="server" style="margin-right: 3px;" Width="266px" SkinID="Plain" /> <asp:Button ID="SearchButton" runat="server" Text="Go" Width="60px" SkinID="Plain" /> </asp:Panel> <asp:ListBox ID="SearchResults" runat="server" Height="150px" Width="100%" SelectionMode="Multiple" style="margin-bottom: 3px;" /> <asp:Button ID="AddButton" runat="server" Text="Add >>" style="margin-right: 3px;" Width="60px" SkinID="Plain" /> <asp:TextBox ID="ChosenPeople" runat="server" Width="325px" SkinID="Plain" /> <div style="float: left;"> <asp:Button ID="AddNewContact" runat="server" SkinID="Plain" Width="150px" Text="New Contact" /> </div> <div style="text-align: right;"> <asp:Button ID="OKButton" runat="server" Text="Ok" SkinID="Plain" Width="100px" /> </div> <input id="SelectedContacts" runat="server" visible="false" /> </asp:Panel> <ajax:PopupControlExtender ID="PickerPopEx" runat="server" PopupControlID="PickerPanel" TargetControlID="LaunchPopup" Position="Bottom" /> </asp:Panel> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="AddButton" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="SearchButton" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="AddNewContact" EventName="Click" /> </Triggers> </asp:UpdatePanel> public partial class ContactPicker : System.Web.UI.UserControl { protected void Page_Init(object sender, EventArgs e) { SearchButton.Click += new EventHandler(SearchButton_Click); AddButton.Click += new EventHandler(AddButton_Click); OKButton.Click += new EventHandler(OKButton_Click); } // Other code left out } ```