0

問題の概要:

テキストボックスとボタンを持つページが 1 つあります。ボタンをクリックすると、いくつかの XML が読み取られ、次のデータが取得されます。

  • 接続するデータベース コネクタのリストを取得します。A、B、C
  • 各コネクタにリンクされたクエリのリストを取得します。A[0,1,2]、B[0]、c[0、1、2、4]

次に、各データベース コネクタ、接続、各クエリの実行、データのフェッチ、動的コントロールとパネルの作成、およびこの方法での表示を繰り返します。

---A----
グリッドビュー A[0] の結果
グリッドビュー A[1] の結果
グリッドビュー A[2] の結果

---B---
グリッドビュー B[0] 結果

コネクタを1つずつ接続して同期してみると、正しく動作して表示されます。ページが数秒間フリーズしますが、最後にすべての操作が完了すると、正しく表示されます。いずれかのコネクタがダウンしている場合に問題が発生します。例。A がダウンしている場合、コネクタのタイムアウト メッセージを受け取るまで、B と C も待機し、ページの読み込み時間が長くなります。

現在、これを非同期で実行する必要があるというビジネス上の要求があります。つまり、すべてのコネクタを並列のように同時に接続してクエリを実行する必要があります。WebServiceを使用してこれを実装しようとしました。しかし無駄に。Div が作成されて閉じ、グリッド/データが入力されます。div は動的に作成されているため、それらの div にグリッドビューを配置する方法がわかりません。

私の現在のロジックは次のとおりです。

Loop through Connectors {
 Create <Div class="Container">
 Create <Div class="conLabel">Label</div>

 Loop through Queries for this connector {
   WebSevice _WS = new WebService();
   __WS.GetDataCompleted += new GetDataCompletedEventHandler(__WS_GetDataCompleted);
   __WS.GetDataAsync(Parameters Here);
 }
 Create </Div>
}

void __WS_GetDataCompleted(object sender, GetDataCompletedEventArgs e) {
  Get result here from e.Result
  Create New gridview and bind to it.      
}

このように表示されます。

---A----
---B---

グリッドビュー A[0] の結果
グリッドビュー A[1] の結果
グリッドビュー A[2] の結果

グリッドビュー B[0] 結果

これが正しいアプローチであるかどうかはわかりません。私はWebServiceに非常に慣れていません。動的に作成される div で gridview を作成するにはどうすればよいですか。

誰かがこの問題を解決するための他のアプローチを見つけるのを手伝ってくれますか?

4

1 に答える 1

0

として動的リテラル コントロールを作成する代わりに、ASP.NET パネルを追加することでこれを解決しました。

Loop through Connectors {
 Panel myPanel = new Panel();
 myPanel.ID = "UNIQUEID"; // Using this ID i am identifying the container

 Loop through Queries for this connector {
   WebSevice _WS = new WebService();
   __WS.GetDataCompleted += new GetDataCompletedEventHandler(__WS_GetDataCompleted);
   __WS.GetDataAsync(Parameters Here);
 }
}
于 2012-08-17T10:15:37.930 に答える