2010-08-10 2 views
7

Wenn ich eine ASP.NET-Seite diene, kann ich die verschiedenen Steuerelemente auf der Seite parallel rendern?Wenn ich eine ASP.NET-Seite diene, kann ich die verschiedenen Steuerelemente auf der Seite parallel rendern?

Ich habe ein paar Telerik-Steuerelemente (RadGrids) auf der Seite und wenn ich durch die Seite gehe, die geladen wird, scheint es, dass die Steuerelemente datengebunden sind und seriell gerendert werden. Vielleicht ist dieses Verhalten, weil ich mit dem Debugger süchtig bin.

Gibt es sowieso, um die Seite zu laden und haben Sie die Auswahl von Steuerelementen auf separaten Threads? Ist das überhaupt möglich oder muss es sequentiell gemacht werden?

+0

Große Frage! – womp

Antwort

3

Sie haben ein paar Optionen. Sie könnten das ASP.NET-asynchrone Seitenmodell verwenden. Die Idee wäre, dass Sie die Daten für jedes Steuerelement asynchron laden und dann diese Daten an jedes Steuerelement binden, sobald es abgerufen wird.

Es würde wie folgt aussehen:

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(); 
} 

Sie würden für jede Kontrolle auf der Seite das gleiche tun. Das Endergebnis ist, dass die Zeit zum Rendern der Seite der Zeit entspricht, in der das Steuerelement mit dem langsamsten Rendern gerendert wird.

Eine alternative Methode wäre die Verwendung von AJAX zum Laden der Steuerelemente. Ich bin nicht vertraut mit dem Telerik RadGrid-Steuerelement, aber ich würde annehmen, dass es AJAX unterstützt. Hier ist ein Link zu einer Telerik-Demoseite, die zeigt, wie man eine programmierbare clientseitige Bindung eines Telerik-Gitters durchführt: http://demos.telerik.com/aspnet-ajax/grid/examples/client/databinding/defaultcs.aspx.