I have an AjaxLoadingPanel on my page to prevent users from clicking the submit button more than once. The first submission/postback works perfectly. After the first postback, a second submission causes the page to flash blank like it's refreshing and postback seemingly without AJAX. The child page content is fine, but the masterpage's header and side panel both end up missing the list of tabs and links for navigating the site. Further postbacks exhibit the same behavior and the masterpage doesn't recover until a manual refresh. There are 2 buttons on the page for submission of the form and display of entries. Regardless of which button is pressed or in what order it always happens on the second postback. Hopefully I've just set something up wrong with the LoadingPanel but any insight would be appreciated.
HTML markup below:
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function pageLoad() { var grid = $find("<%= gridAgents.ClientID %>"); var columns = grid.get_masterTableView().get_columns(); for (var i = 0; i < columns.length; i++) { columns[i].resizeToFit(); } } </script> </telerik:RadCodeBlock></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="PageHeaderContentPlaceHolder" runat="Server"></asp:Content><asp:Content ID="Content3" ContentPlaceHolderID="SideBarPlaceHolder" runat="Server"></asp:Content><asp:Content ID="Content4" ContentPlaceHolderID="PageContentPlaceHolder" runat="Server"> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div class="container"> <!-- Input controls for form fields --> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="UpdatePanel1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="UpdatePanel1" LoadingPanelID="RadAjaxLoadingPanel1"></telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" IsSticky="false" BackgroundTransparency="70" Direction="LeftToRight" EnableSkinTransparency="true" Skin="Default" Style="position: center; width: 100%"> </telerik:RadAjaxLoadingPanel> <br /> <br /> From: <telerik:RadNumericTextBox ID="txtFrom" runat="server" CssClass="form-control" NumberFormat-DecimalDigits="0" MinValue="0" Width="50px" NumberFormat-GroupSeparator=""></telerik:RadNumericTextBox> To: <telerik:RadNumericTextBox ID="txtTo" runat="server" CssClass="form-control" NumberFormat-DecimalDigits="0" MinValue="0" Width="50px" NumberFormat-GroupSeparator=""></telerik:RadNumericTextBox> <asp:Button ID="btnSet" runat="server" Text="Set" CssClass="btn btn-primary" OnClick="btnSet_Click" /> <div id="output" runat="server" style="height: 70px; width: 100%; overflow: auto"> <telerik:RadGrid ID="grid" runat="server" AutoGenerateColumns="true" DataSourceID="DataSource"> <ClientSettings> <Resizing AllowColumnResize="true" ResizeGridOnColumnResize="true" AllowResizeToFit="true" EnableRealTimeResize="true" /> </ClientSettings> </telerik:RadGrid> </div> <asp:SqlDataSource ID="DataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand=""></asp:SqlDataSource> </div> </ContentTemplate> </asp:UpdatePanel></asp:Content>C# backend below:
protected void Page_Load(object sender, EventArgs e){}protected void btnInput_Click(object sender, EventArgs e){ //Object creation and SQL insert if (err.Equals(String.Empty)) { DataSource.SelectCommand = "SELECT * FROM [Table] WHERE [Col] = " + id.ToString(); output.Attributes.CssStyle.Add("height", "70px"); lblSuccess.Visible = true; clearControls(); //sets control fields to empty } else { lblErr.Visible = true; lblErr.Text = err; }} protected void btnSet_Click(object sender, EventArgs e) { AgentDataSource.SelectCommand = "SELECT * FROM [Table] WHERE [Col] BETWEEN " + txtFrom.Text + " AND " + txtTo.Text; output.Attributes.CssStyle.Add("height", "300px"); gridAgents.Rebind(); }Masterpage markup below:
<body> <table id="PageBody" cellpadding="0" cellspacing="0"> <tr> <td id="PageHeaderSideBar"> <asp:Image ID="Image5" runat="server" SkinID="PageLogo" CssClass="PageLogo" /> </td> <td id="PageHeaderLeftSide"> <asp:Image ID="Image1" runat="server" SkinID="Placeholder" /> </td> <td id="PageHeaderContent"> <div class="Header"> <asp:SiteMapPath ID="SiteMapPath1" runat="server" SkinID="SiteMapPath" /> <div class="Title"> <asp:ContentPlaceHolder ID="PageHeaderContentPlaceHolder" runat="server"> Page Title</asp:ContentPlaceHolder> </div> </div> </td> <td id="PageHeaderRightSide"> <asp:Image ID="Image2" runat="server" SkinID="Placeholder" /> </td> </tr> <tr> <td id="PageContentSideBar" valign="top"> <div class="SideBarBody"> <asp:ContentPlaceHolder ID="SideBarPlaceHolder" runat="server" /> <asp:Image runat="server" SkinID="Placeholder" /> </div> </td> <td id="PageContentLeftSide"> <asp:Image ID="Image3" runat="server" SkinID="Placeholder" /> </td> <td id="PageContent" valign="top"> <asp:ContentPlaceHolder ID="PageContentPlaceHolder" runat="server" /> </td> <td id="PageContentRightSide"> <asp:Image ID="Image4" runat="server" SkinID="Placeholder" /> </td> </tr> <tr> <td id="PageFooterSideBar" /> <td id="PageFooterLeftSide" /> <td id="PageFooterContent" /> <td id="PageFooterRightSide" /> </tr> </table></body>