The module I am developing consists of a number of panels. It starts off by displaying details of the currently signed on user showing some additional fields from the users profile along with a number of “links” from which the user selects options. When the user makes a selection a panel containing a grid is added. The user then enters the required data and clicks Save.
Based on the original “link” selection the user is presented with one or more panels, each containing a grid. They can choose to add items. When all the required data is entered they click “Submit” and the data is passed to a web service for processing.
Prior to upgrading to DNN 4.5.5 (from 4.5.1) I had each panel/grid pair wrapped in an asp:UpdatePanel and used Ajax. This worked well with the usual progress gif displaying while the update was in progress.
On upgrading to DNN 4.5.5 I noticed that my update progress was no longer showing and I began to get errors. This appeared to be a conflict between DNN Ajax and my own update panels. Unchecking “Supports Partial Rendering” seems to remove this conflict and the errors. However I seem unable to get my progress panels to work.
EDIT: Error displayed by DNN
Sys.InvalidOperationException: Could not find UpdatePanel with ID
'dnn_ctr387_View_pnlUpdateDelivery'. If it is being updated dynamically
then it must be inside another UpdatePanel.
If I don't do DotNetNuke.Framework.AJAX.RegisterScriptManager() and don't check Supports Partial Rendering then there is no error but UpdateProgress does not work.
<asp:Panel ID="pnlDelivery" runat="server" Visible="false" >
<asp:UpdatePanel ID="pnlUpdateDelivery" runat="server">
<ContentTemplate>
Grid templates in here …
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lnkAddDelivery" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="progressDelivery" runat="server"
AssociatedUpdatePanelID="pnlUpdateDelivery" DisplayAfter="10" >
<ProgressTemplate>
<div class="progress_icon" > </div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:Panel ID="pnlSaveDelivery" runat="server" Visible="true" >
<br />
<asp:LinkButton ID="lnkAddDelivery" runat="server" CssClass="grdAddButton">
Click here to add additional delivery destinations
</asp:LinkButton>
<hr />
…
</asp:Panel>
</asp:Panel>
Send Link:
I use javascript in the Submit link to hide all panels/grids which should have left me with the progress message and icon displaying while the web service does its bit. The UpdateProgress no longer shows. All the grid panels are wrapped in a div which the javascript hides.
<asp:UpdatePanel ID="pnlUpdateSend" runat="server">
<ContentTemplate>
<asp:LinkButton
ID="lnkSubmit" runat="server"
CssClass="grdAddButton" Text="Submit Request"
onClientClick=" HideSearchPanel('search');">
</asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="progressSend" runat="server"
AssociatedUpdatePanelID="pnlUpdateSend" DisplayAfter="1" >
<ProgressTemplate>
<table border="0" >
<tr>
<td>Please wait while we submit your request for processing </td>
<td width="100px"><div class="progress_icon" > </div>
</td>
</tr>
</table>
</ProgressTemplate>
</asp:UpdateProgress>
Any thoughts? Do I need to change something in DNN to ignore DNN Ajax or can I? My impression, though I may be wrong, is that the DNN idea is that the whole module is treated as within an UpdatePanel and thus does not seem to like the idea of parts of a module residing in separate UpdatePanel(s)
Declan