さまざまな数のパネルで構成されるダッシュボード インターフェイスを含む ASP.net アプリケーションがあります。各 Panel には HighChart コントロールが含まれており、異なるデータ ソースから読み込まれます。一部のデータ ソースは実行に時間がかかる場合があるため、1 つのデータ ソースの読み込みが遅いためにページ全体の実行速度が低下することは望ましくありません。
ページをロードしてから、データの準備ができたら各パネルを表示したいと思います。
ハイチャートを使用してデータを表示しているため、次のようなjQueryコードがあります。
$(document).ready(function () {
var panelIDList = dashID.Get("panelList");
for (var i = 0; i < panelIDList.length; i++) {
addpanel(panelIDList[i]);
}
});
function addpanel(panelID)
{
$.ajax({
type: "POST",
url: "Data.aspx/GetData",
data: "{val:'" + panelID + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var myObject = eval('(' + msg.d + ')');
var options = {
chart: {
renderTo: myObject.renderTo,
type: myObject.chartVal,
height: 300,
width: 600
},
xAxis: {
categories: myObject.xaxis.Categories,
},
series: myObject.serList
};
var chart = new Highcharts.Chart(options);
}
});
$(document).ready に見られるように、サーバーに Ajax コールバックを行い、チャート データの構築に使用される JSON データ構造を取得します。
これはすべて正常に機能しますが、最初のパネルの読み込みが遅い場合、最初のパネルの読み込みが遅いまで後続のパネルは読み込まれません。デモを行うために、DataSource パネルの 1 つに Thread.Sleep を追加しました。
私はAjax呼び出しを使用しているので、これが当てはまるとは思いませんでした。