Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When I serve an ASP.NET page, can I render the various controls on the page in parallel?

When I serve an ASP.NET page, can I render the various controls on the page in parallel?

I have a few Telerik controls (RadGrids) on the page and when I step through the page being loaded, it seems as though the controls are databound and rendered serially. Maybe this behavior is because I am hooked in with the debugger.

Is there anyway to load the page and have select controls build on separate threads? Is that even conceptually possible or must it be done sequentially?

like image 582
Matt Avatar asked Aug 10 '10 19:08

Matt


1 Answers

You have a couple of options. You could use the ASP.NET asynchronous page model. The idea would be that you load the data for each control asynchronously and then bind that data to each control as it is retrieved.

It would look something like this:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsAsync) {
        dataSource.GetDataCompleted += 
          new GetDataCompletedEventHandler(GetDataCompleted);
        dataSource.GetDataAsync();
    }
    else {
        _yourCtl.DataSource = dataSource.GetData();
        _yourCtl.DataBind();
    }
}

void GetDataCompleted(object sender, GetDataCompletedEventArgs e) {
    _yourCtl.DataSource = e.Result;
    _yourCtl.DataBind();
}

You would do the same for each control on the page. The end result is that the time to render the page will equal the time to render the slowest-rendering control.

An alternative method would be to use AJAX to load the controls. I'm not familiar with the Telerik RadGrid control, but I would assume that it supports AJAX. Here's a link to a Telerik demo page that shows how to perform programatic client-side binding of a Telerik grid: http://demos.telerik.com/aspnet-ajax/grid/examples/client/databinding/defaultcs.aspx.

like image 110
Andy Wilson Avatar answered Oct 14 '22 21:10

Andy Wilson