ActiveAnalysis: Avoid Wait for Server Message after Postback
ActiveAnalysis serves up great data visualization on Windows, Web and Silverlight platforms and hence makes the task of performing analysis seem trivial to end users. Here let’s talk about the Web based scenario. Most developers use multiple Server Side controls with ActiveAnalysis. These server controls may cause postback to the server. While this is an expected behavior, it may not augment well for ActiveAnalysis. Let’s understand why. ActiveAnalysis by definition is an Ad Hoc analysis tool and when used over the Web, it’s like any other server side control out there. When a page initially loads with ActiveAnalysis PivotView control, it performs quite a few tasks that include loading the PivotView control, schema and even populating the layout in few cases. Since this is a server intensive task, users usually see a "Waiting for Server" spinner. If now the page post backs to the server because of another server side control like a Button, it would result in the entire page to be loaded again. Users will continue to see the "Waiting for Server" spinner and wait till the time the PivotView gets initialized. Many developers would really want to avoid this waiting time. The solution rests in making the web page perform a partial postback when any server side control other than ActiveAnalysis performs a postback. This can be done using Ajax’s UpdatePanel and ScriptManager. These controls remove the requirement to refresh the whole page with each Postback, which improves the user experience and hence gives us solution that we were looking for. We only need to wrap our server side controls (excluding the ActiveAnalysis) inside UpdatePanel control. This will cause only partial postback when any server side event of controls in UpdatePanel is fired and ActiveAnalysis will not be refreshed. The HTML Markup that implements this solution is provided for further understanding.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<cc2:LocalCubeDataSource ID="LocalCubeDataSource1" runat="server">
</cc2:LocalCubeDataSource>
<cc1:PivotView ID="PivotView1" runat="server"
DataSourceID="LocalCubeDataSource1" Height="593px" onload="PivotView1_Load"
Width="849px">
</cc1:PivotView>
<br />
<br />
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="ClickMe!!" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>