ユーザーがAPIを呼び出してデータを変更したり、既存のスタイルを変更したりするたびに、CellChangedイベントが発生します。 イベントが短い時間枠で繰り返し発生される場合、大きなオーバーヘッドが発生し、全体的なパフォーマンスが減少される可能性があります。
したがって、一度に多くの変更を組み込むことを計画しているが、Spreadイベントを発生させたくない場合は、suspendEventメソッドとresumeEventメソッドを使用することをお勧めします。
suspendEventメソッドは、すべての変更が完了するまでイベント処理を停止し、resumeEventメソッドがイベント処理を復元します。従って、これらの2つのメソッドを使用してイベントを管理することでSpreadJSのパフォーマンスを向上できます。
次のコードは、SpreadJSで操作する際、suspendEventメソッドとresumeEventメソッドでパフォーマンスを向上する方法を示します。
JavaScript |
コードのコピー
|
---|---|
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss")); var sheet = spread.getActiveSheet(); spread.bind(GC.Spread.Sheets.Events.CellChanged, function (sender, args) { console.log(sheet.getValue(args.row, args.col) + "の値を持つ[" + args.row + "," + args.col + "]セルでCellChangedイベントが発生します"); }); spread.suspendPaint(); spread.suspendEvent(); for (var i = 0; i < 20; i++) { for (var j = 0; j < 10; j++) { sheet.setValue(i, j, "111"); } } spread.resumeEvent(); spread.resumePaint(); /* この場合、CellChangedイベントがセル[22,2]の場合のみ発生し、 他のセルの場合は発生しません。セル[22, 2]の値がsuspendEvent()とresumeEvent()メソッドの境界の後に設定されているからです。*/ sheet.setValue(22, 2, "222"); |