2017-01-29 1 views
1

2つのユーザーコントロールをaspxページで同時にレンダリングすることは可能ですか?データロードが非同期として定義されているにもかかわらず、あるユーザーコントロールがデータのロードを待機している間に他のユーザーコントロールがレンダリングされないようです。レンダリングASP.Netユーザーコントロールが平行

私はCustomGridViewコントロールを持っています。これはSystem.Web.UI.WebControls.GridViewから継承されています。私のaspxページでは、レンダリングされるいくつかの CustomGridViewsがあります。そしてまた私のaspxページではページは、ASP.NETのWebフォームのレンダリングは、コントロールがレンダリングとの順序に依存する可能性があるとして

public class CustomGridView : GridView{ 
    //... 
    protected override void OnPagePreLoad(object sender, EventArgs e) 
    { 
     Page.RegisterAsyncTask(new PageAsyncTask(GetDataAsync)); 
     base.OnPagePreLoad(sender, e); 
    } 
    private async Task GetDataAsync(){ 
     var data=await _service.GetDataAsync(); 
     this.DataSource=data; 
     this.DataBind(); 
    } 
    //... 
} 

答えて

1

は私がこれが今まで可能であることを期待していない、async=trueとして定義されますコントロールツリー上にあります。

ただし、レンダリング前にすべてのデータソースを同時にロードすることはできません。

+0

問題はdatasource.databind()が各ユーザーコントロール自体から呼び出されるため、すべてのデータソースが並列に読み込まれないように見えます。そして、データが読み込まれるのを待ちます。 –

+0

'GridView'を拡張しているのであれば、カストムコントロールではありませんか?ユーザーコントロールは 'UserControl'を拡張します。 –

+0

なぜコントロールコードの代わりにページコードのデータをバインドしないのですか? –

関連する問題