Asp Net Source.com's BlogAspNetSource's Official Blog

asp.net source code blog

Categories

Archives

2/18/2010 - Why is there an ASP.NET account on my machine
1/16/2010 - How to Open a Redirect in a New Window
1/2/2010 - Convert string to datetime Using C#
12/8/2009 - Using ASP.NET FileUpload to work with Images
11/24/2009 - Detect and Replace URLs in Text using Regex
11/17/2009 - Display RSS Feeds Using XmlDataSource
11/12/2009 - Get Current Theme Programmatically
11/10/2009 - Add Default ListItem to a DropDownList Control
10/20/2009 - GridView with LINQ Programatically
9/28/2009 - Server.HtmlEncode vs HttpUtility.HtmlEncode
8/20/2009 - Get List of sub Directories
7/29/2009 - gridview hide header
7/27/2009 - EmptyDataText Property in the Repeater Control
7/11/2009 - XmlDataSource GridView Example
7/5/2009 - Displaying multiple static paths by single page
6/8/2009 - Categories of classes in the System.Security.Cryptography Namespace
6/1/2009 - Delayed Loading of Page Parts
5/7/2009 - Using MySql in ASP.NET project, cofiguring, exaples with SqlDataSource, GridView, etc
4/29/2009 - What Are You Coding Right Now
4/23/2009 - Concat Byte Arrays in C Sharp
4/13/2009 - Visual Studio 2010 is Coming
3/16/2009 - automatic refresh page in some interval with javascript
2/21/2009 - we have just launched a new asp.net related site
2/18/2009 - Try Catch vs. Using
2/10/2009 - How to Set Language in web.config
1/30/2009 - A New Site for Free Online Test for Developers
1/21/2009 - Easy way to send email from gmail account using ASP.NET 3.5
1/15/2009 - Easy way to Dispaly a Word Document in Web Page
12/20/2008 - Create Yes No Voting Control
12/20/2008 - Our Team
12/15/2008 - Select xml node by other node
12/3/2008 - Forget about tedious mistakes when Validate through W3C
11/19/2008 - Fields removed when Download our Products
11/13/2008 - How to select all text in textbox when it gets focus
11/7/2008 - LINQ DataContext Class
11/3/2008 - PNGs and Browser Support
10/28/2008 - Check site loading by different locations in the world
10/27/2008 - Fix the SQL Connection Problems
10/26/2008 - Encrypt Connection Information
10/25/2008 - Generate Sitemap for your Site
10/23/2008 - Introduction to Design Patterns
10/21/2008 - Differences between Components, Controls, and Behaviors
10/20/2008 - What Is LINQ to SQL
10/19/2008 - Evolution of SQL Server
10/16/2008 - Loading Master Pages Dynamically in ASP.NET 3.5
10/15/2008 - A Brief Overview of Validation in ASP.NET 3.5
10/14/2008 - Automatically Hiding the Login Control from Authenticated Users
10/9/2008 - Check the load time of your website
10/5/2008 - Screw it, Lets RE-Design it all
10/2/2008 - Additional ASP.NET AJAX Libraries
9/29/2008 - The Big Problem of WYSIWYG Editors
9/29/2008 - New Forum for ASP.NET and Web Started
9/25/2008 - Optimize Page Loading Part 2 - Tips When work with Images
9/23/2008 - 10 Design Tips
9/19/2008 - C Sharp Features in Framework 3.0
9/15/2008 - Optimize Page Loading - 20 General Tips and Tricks
9/7/2008 - what is asp.net
9/5/2008 - Why Client Validation is not enough to secure our web app
8/29/2008 - Optimize Page Loading when works with DataBase
8/20/2008 - Highlight text in GridView using javascript
8/4/2008 - ContentPlaceHolder in title tag, Is That Bug in VS 2008
8/1/2008 - Why should we use ResolveUrl
7/31/2008 - Guid.TryParse in Framework 3.5
7/30/2008 - Redirect to current page
7/28/2008 - Validate Max Length of TextBox text
7/24/2008 - Easiest way for Row Numbering in GridView
7/23/2008 - Framework 3.5 Disadvantage of lamda expressions
7/21/2008 - LINQ - display filed from parent table in LinqDataSource and GridView
7/17/2008 - LinqDataSource and Guid passed as QueryStringParameter
7/14/2008 - Inappropriate name of DetailsView in msdn
7/9/2008 - Hide form after user download file
7/7/2008 - Menu in Master Page. How to set selected item from Page
7/4/2008 - Overview of New in Framework 3.5
7/2/2008 - New in Framework 3.5 - Generic Class HashSet
7/2/2008 - Present XmlDataSource data with Repeater
7/1/2008 - How to Validate ImageButton control through W3C
6/30/2008 - Using Find Method in Generic Controls With VB.NET - List
6/30/2008 - Using Find Method in Generic Controls With CSharp - List of T
6/30/2008 - Script injections using ASP.NET

Links

 

Delayed Loading of Page Parts

Posted by Tihomir Ivanov on 01 June 2009 07:18
Rating: 3.50

I've recently had the following issues:

I wanted to add 14 DataSources/GridViews (Each of them connects to different database) on a single page.

When I added them (using the standard way) the page began to loads very very slow. So, I decided:

1. the main content of the page (header, menu, footer, etc.) to load first

2. the DataSources/GridViews to become loading one by one.

Here's the solution of my issue:

1. Add user control for every page part:

I created ascx control for every page part. (the DataSources/GridViews were almost the same only differs by database name and table name, so I could use one control for all DataSources/GridViews).

ex.

<asp:Panel runat="server" ...>
   <asp:UpdatePanel runat="Server" ID="updateRSS" UpdateMode="Conditional">
     <contenttemplate>
        <asp:MultiView runat="server" ID="_multiView" ActiveViewIndex="0" >

          <asp:View runat="Server" ID="view1">
             Loading . . .
          </asp:View>

         <asp:View runat="server" ID="view2">
           <asp:GridView ID="_msgsGV" DataSourceID="_msgsDS" runat="server">
              . . .
           </asp:GridView>
           <asp:SqlDataSource ID="_msgsDS" runat="server">
             . . .
           </asp:SqlDataSource>
         </asp:View>

         <asp:View runat="Server" ID="view3">
           Unable to load content :(
         </asp:View>

        </asp:MultiView>

        <asp:Timer ID="_timerMessages" Interval="1" OnTick="OnTimerMessagesTick" runat="server" />
      </contenttemplate>
     </asp:UpdatePanel>
</asp:Panel>

We have to put all control's content in a separate UpdatePanel. To show loading, GridView/SqlDataSource, 'unable to load page' I use Views in a MultiView.

We need asp:Timer too. in the OnTick event handler will be the real filling of the GridView/SqlDataSource.

2. Handle the OnTick event:

protected void OnTimerMessagesTick(object s, EventArgs e)
{
     try
    {
         //t Display the loaded GridView/SqlDataSource
         _mv.ActiveViewIndex = 1;
    }
    catch (Exception)
   {
       //t Diplay the "unable to load"
       _mv.ActiveViewIndex = 2;
    }

    //Important!
    _timerMessages.Enabled = false;
}

In the OnTick event we do two things:

First, change the _mv' ActiveViewIndex to show the GridView/SqlDataSource.

and second (very important) Disable the asp:Timer, we do it to disable another GridView/SqlDataSource reloading.

3. Adding the ascx control to a aspx page:

<%@ Page Language="C#" . . . %>
. . .
<%@ Register Src="~/controls_path/ourControl.ascx" TagName="our_cotrol" TagPrefix="usr" %>

 

<asp:ScriptManager . . . />

 . . .

<script type="text/javascript">
   function scrollTo()
  {
      return;
  }
</script>

. . .

<usr:our_cotrol ID="some_id" . . . ></usr:our_cotrol>

We add the ascx control in the standard way.

NOTE: Before some of the timer fires, sometimes the user "scrolled down" the page and then the Ajax Timer fires and the "scroll position" of the page is changed again to the top.

So, we over-ride the javascript function that is called by adding the code:

<script type="text/javascript">
   function scrollTo()
  {
      return;
  }
</script>

You can see the working example of the article HERE

That's all :)

 Comments:
in Posted by SEO on 01 August 2009 03:26   Rating: 3
I was just thinking about user control for every page and you've really helped out. Thanks!


http://www.search-value.com/internet-marketing/seo-services.html
in Posted by Internet Marketing Company on 02 July 2009 08:26   Rating: 4
Good post, but have you thought about Delayed Loading of Page Parts before?
 Add New Comment:
Name*:    Rating:
E-mail*:
Website:
Country:  Country flag
Comment*:
B I U url img quote                                    
Created By AspNetSource.com
Are you human ?      


 
Asp Net Source.com


 
Our Sponsors:  Asp.net file upload component  |   Flash file uploader