PowerTools SPREAD for ASP.NET 8.0J > 開発者の手引き > データ操作 > ロードオンデマンド |
SPREADに設定されたデータをオンデマンドでロードできます。大量のデータを一度に読み込むのではなく、指定の行数分のセットを段階的に読み込みます。これにより、アプリケーションのパフォーマンス向上が期待できます。ユーザーのスクロール操作または時間経過といったタイミングで、クライアント側で必要に応じて次のページまたは行セットをロードします。
ロードオンデマンドには、以下の2種類のロード方法があります。
スクロール操作により、ビューから非表示になっている次の行セットをロードします。つまり、行の読み込みはスクロール操作により開始されます。そのため、標準モードのロードオンデマンド機能を使用するには、スクロールバーが表示されている必要があり、コントロールの高さを、最初に表示される行数の高さより小さくする必要があります。既定値は標準モードです。
ユーザー操作を妨げることなく、バックグラウンドで読み込みます。このモードには以下の二つのロード方法があります。
バックグラウンドによるロードオンデマンドでは、行のロード中に他のAjax要求を保留にできます(行のロードによってSpreadがロックされない)。アクションは保留中の要求のキュー内に格納され、後で処理されます。ロードオンデマンドが完了すると、キュー内で保留されている要求は、キュー内が空になるまで、すべて処理されます。
階層表示では、ロードオンデマンド機能は無効になります。 |
ロードオンデマンド機能を許可するには、SheetView クラスのAllowLoadOnDemand プロパティをtrueに設定します。また、初期ロード時に読み込む行数およびロードオンデマンド時の増分(行セットに含まれる行数)はそれぞれ、LoadInitRowCount プロパティ、LoadRowIncrement プロパティで設定します。
また、ロードオンデマンド機能を標準モードで使用するには、LoadOnDemandMode プロパティをLoadOnDemandMode.Standardに、バックグラウンドモードで設定するには、LoadOnDemandMode.Background設定します。
バックグランドモードのときの、ロード方法はLoadOnDemandTriggerMode プロパティで設定します。任意の行が表示された最にロードするには、LoadOnDemandTriggerMode.OffsetBasedに、指定の時間間隔でロードするにはLoadOnDemandTriggerMode.Timedにします。時間間隔は、LoadOnDemandInterval プロパティにミリ秒単位で指定します。
ロードオンデマンド機能が開始すると、 LoadRowsStart イベントが発生します。また、行のロードが終了すると、LoadRowsStopped イベントが発生します。
次のサンプルコードは、時間間隔で行セットをロードする機能を設定します。
FpSpread1.ActiveSheetView.RowCount = 100; FpSpread1.ActiveSheetView.AllowLoadOnDemand = true; FpSpread1.ActiveSheetView.AllowPage = false; FpSpread1.ActiveSheetView.LoadInitRowCount = 5; FpSpread1.ActiveSheetView.LoadRowIncrement = 10; FpSpread1.ActiveSheetView.LoadOnDemandMode = FarPoint.Web.Spread.LoadOnDemandMode.Background; FpSpread1.ActiveSheetView.LoadOnDemandTriggerMode = FarPoint.Web.Spread.LoadOnDemandTriggerMode.Timed; FpSpread1.ActiveSheetView.LoadOnDemandInterval = 1000; for (int i = 1; i < 100; i++) { FpSpread1.ActiveSheetView.Cells[i, 0].Value = i; }
FpSpread1.ActiveSheetView.RowCount = 100 FpSpread1.ActiveSheetView.AllowLoadOnDemand = True FpSpread1.ActiveSheetView.AllowPage = False FpSpread1.ActiveSheetView.LoadInitRowCount = 5 FpSpread1.ActiveSheetView.LoadRowIncrement = 10 FpSpread1.ActiveSheetView.LoadOnDemandMode = FarPoint.Web.Spread.LoadOnDemandMode.Background FpSpread1.ActiveSheetView.LoadOnDemandTriggerMode = FarPoint.Web.Spread.LoadOnDemandTriggerMode.Timed FpSpread1.ActiveSheetView.LoadOnDemandInterval = 1000 For i As Integer = 1 To 100 FpSpread1.ActiveSheetView.Cells(i, 0).Value = i Next